OAuth2.0
OAuth2.0是一个开放标准,允许用户授权第三方应用程序访问他们存储在另外的服务器上的信息,而不需要将用户名和密码提供给第三方应用或分享他们数据的所有内容。
OAuth2.0协议的认证流程,简单理解,就是允许我们将之前的授权和认证过程交给一个独立的第三方进行担保。
OAuth2.0协议有四种认证方式:
- 授权码模式(三方互不信任)
- 简化模式(授权服务器和第三方相互信任)
- 密码模式(资源拥有者和第三方相互信任)
- 客户端模式(三方都相互信任)
在梳理OAuth2.0协议流程的过程中,其实有一个主线,就是三方参与者之间的信任程度。
普通令牌只是一个随机的字符串,没有特殊的意义。这就意味着,当客户带上令牌去访问应用的接口时,应用本身无法判断这个令牌是否正确,他就需要到授权服务器上去判断令牌是否有效。在高并发场景下,检查令牌的网络请求就有可能成为一个性能瓶颈。
改良的方式就是JWT令牌。将令牌对应的相关信息全部冗余到令牌本身,这样资源服务器就不再需要发送请求给授权服务器去检查令牌了,他自己就可以读取到令牌的授权信息。JWT令牌的本质就是一个加密的字符串! !
SSO
OAuth2.0的使用场景通常称为联合登录。一处注册,多处使用。
SSO Single Sign On单点登录。一处登录,多处同时登录。
SSO的实现关键是将Session信息集中存储。
如何设计一个开放授权平台?
开放授权平台也可以按照认证和授权两个方向来梳理。
1、认证:就可以按照OAuth2.0协议来规划认证的过程。
2、授权:首先需要待接入的第三方应用在开放授权平台进行注册,注册需要提供几个必要的信息clientID,消息推送地址,密钥(一对公私钥,私销由授权平台自己保存,公钥分发给第三方应用)。
然后,第三方应用引导客户发起请求时,采用公钥进行参数加密,授权开放平台使用对应的私钥解密。
接下来:授权开放平台同步响应第三方应用的只是消息是否处理成功的结果。而真正的业务数据由授权开放平台异步推动给第三方应用预留的推送地址。
标签:令牌,认证,授权,服务器,OAuth2.0,第三方 From: https://blog.51cto.com/u_16370137/8706962