OAuth2.0

不同平台,用户之间互信的问题
UAC 身份验证中心,管理Web应用,桌面应用和手机,和起居室设备的用户身份验证,允许用户通过一次登录就访问来自多个应用程序的数据

OAuth2.0协议
无需加密的认证方式,OAuth 就是一种授权机制。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用

认证授权过程:微信扫码登录第三方网站就是OAuth2.0的一个例子;扫码后会在手机上让用户授权:是否同意登录该网站
我住在一个门禁系统的小区内。进入需要输入密码。如何让快递员通过门禁进入小区?
1. 门禁系统增加一个授权按钮,快递员申请授权
2. 快递员申请授权后,我手机接收到申请,并且显示快递员相关信息
3. 告诉门禁系统,同意快递员进入小区的授权
4. 门禁向快递员发送一个令牌,快递员输入令牌,进入小区

令牌跟密码的区别
1. 令牌是有时间限制的。会自动失效,并且使用只可以使用一次
2. 令牌可以被数据所有者撤销,会立即失效,屋主可以随时撤销令牌
3. 令牌有权限范围,只读令牌

客户端通过用户请求授权的时候生成一个code,这个有时间限制并且使用次数限制
授权服务器返回客户端生成的state
客户端拿到code,与授权服务器通信,通过code换取token
每次与授权服务器通信都需要提供一个Oauth的secret或者用他加密

4种授权模式
1. 授权码模式 通过客户端的后台服务器 与认证服务器进行互动,需要浏览器
2. 简化模式 直接在浏览器向认证服务器申请令牌跳过授权码,所有步骤在浏览器完成,令牌对访问者是可见的,客户端不需要认证,需要浏览器
3. 密码模式 用户向客户端提供用户名跟密码,客户端根据这些信息向服务器就索要授权,我们的密码给了客户端,但是客户端不存储密码
4. 客户端模式 客户端以自己的名义,向服务端进行认证。


1. 用户向客户提供用户名跟密码
2. 客户端将用户名跟密码发给认证服务器,请求令牌
3. 认证服务器给客户端提供访问令牌
4. 用户使用访问令牌获取资源服务器
5. 资源服务器去授权服务器验证令牌的有效性
6. 资源服务器根据用户信息,处理请求等发送响应给客户端

原文地址:https://www.cnblogs.com/ingstyle/p/11663452.html