cas和oauth2是如何完成登录的?

 

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去调用微信提供的用户信息接口获取用户信息

获取到用户信息后,完成登录操作(京东拿到手机号后会在京东库获取京东存储的用户信息)

 

 

总结:

京东作为被授权方干了两件事情

  1. 跳转到授权页
  2. 提供授权回调接口,根据code获取token,然后根据token获取用户信息

 

微信作为授权方干了三件事情

  1. 提供授权页
  2. 提供获取token接口
  3. 提供获取用户信息接口

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值