1.1 CAS
CAS分为两部分,CAS Server和CAS Client
CAS Server用来负责用户的认证工作,就像是把第一次登录用户的一个标识存在这里,以便此用户在其他系统登录时验证其需不需要再次登录。
CAS Client就是我们自己的应用,需要接入CAS Server端。当用户访问我们的应用时,首先需要重定向到CAS Server端进行验证,要是原来登陆过,就免去登录,重定向到下游系统,否则进行用户名密码登陆操作。
举个例子:
用户要直接访问你的系统,你发现没ticket直接重定向到 cas Server端,登录后再跳转到你的系统(跳转的时候带着ticket),然后你的系统发现有ticket了,拿着ticket调cas Server端的接口获取用户的信息(id,name等),然后完成登录操作 。
CAS登录流程图
1.2 Oauth2
Oauth2是目前最流行的授权机制,用来授权第三方应用,获取用户数据。
Oauth2 简单来说从结构上可以分文授权方、被授权方、资源方
授权方:提供授权页面,提供获取token接口,提供token校验接口,
资源方:校验token ,提供获取用户信息接口
被授权方:获取token , 拿token去换用户信息
Oauth2 标准定义了四种模式。
授权码模式,密码模式等。
授权码模式流程用的相对多些,但是是最常用的,下面举一个微信授权的例子说一下
很多网站登录都支持微信登录,然后获取微信用户信息。 那么微信肯定是授权方和资源方
用京东为例
1.首先打开京东登录页,选择微信登录
2.页面跳转到了微信的授权页面https://open.weixin.qq.com/ ,授权页面是微信的
https://open.weixin.qq.com/connect/qrconnect?appid=wx827225356b689e24&state=03811759505E8221FF0FEDFA368A2CCDD6F6CC09DB57F143530692CC3EF37FCC81EF11E61B16CEED8734C265CF903AFB&redirect_uri=https://qq.jd.com/new/wx/callback.action?view=null&uuid=924519111f8a4c21a5ee5dea7462d7fb&response_type=code&scope=snsapi_login#wechat_redirect
这个授权页面链接中有一个redirect_uri 重定向url ,其实就是京东告诉微信,用户授权后,你需要重定向到我这个地址,微信重定向的时候也会追加一个code参数
3.打开微信扫码同意京东获取我的账号信息
4.微信授权页直接跳转到了京东首页并且登录了。
F12可以看出 微信授权页面重定向了这个地址,并且带着code
https://qq.jd.com/new/wx/callback.action?code=xxxxx
京东的这个接口里面我们可以猜一下干了什么事情
根据code 去调用微信提供的获取token接口
拿到token去调用微信提供的用户信息接口获取用户信息
获取到用户信息后,完成登录操作(京东拿到手机号后会在京东库获取京东存储的用户信息)
总结:
京东作为被授权方干了两件事情
- 跳转到授权页
- 提供授权回调接口,根据code获取token,然后根据token获取用户信息
微信作为授权方干了三件事情
- 提供授权页
- 提供获取token接口
- 提供获取用户信息接口