OAuth2.0
OAuth2.0
基本流程:
OAuth2.0中应用获取授权有4种模式:
1. 授权码模式
授权码模式是功能最完整、流程最严密的授权模式之一。它的特点就是通过应用的后端服务器,与“服务提供商”的认证服务器进行互动。
流程如下:
1. 用户访问应用
2. 应用判断用户是否登录,如果未登录则选择是否第三方授权,是则重定向到认证服务器
3. 用户选择是否给与当前应用授权。如果用户给与授权,认证服务器则发放授权码
4. 认证服务器将用户重定向该应用事先指定“重定向URL”,同时附上刚才的授权码
5. 应用受到授权码,使用授权码向认证服务器申请令牌。这一步是在应用的后端的服务器上完成的,对用户不可见
6. 认证服务器核对授权码,确认无误后,向应用发送访问令牌(Access Token)或更新令牌(Refresh Token)
2. 隐式授权模式
隐式模式也叫作client-side模式,该模式不通过第三方应用程序的服务器,主要用在没有或无法安全存储访问令牌的使用场景,适用于需要通过客户端访问的方式,例如需要浏览器的JavaScript代码,或计算机/移动终端上的客户端访问时
流程如下:
1. 用户访问应用
2. 应用将用户导向认证服务器
3. 用户同意授权,认证服务器将用户导向应用指定“重定向URL”,并在URL的url_hash部分包含了访问令牌,用户通过解析脚本Url_Hash教习获取令牌
3. 密码模式
密码模式,即用户将令牌发到应用中,用户向应用提供自己的用户和密码。应用使用这些信息,向“服务提供商”索要授权。这种模式,用户必须把自己的密码给应用,但是应用不得存储密码。这通常用在用户对应用高度信任的情况下。
流程如下:
1. 用户向应用提供用户名和密码
2. 应用将用户名和密码发给认证服务器,向应用服务器请求令牌
3. 认证服务器确认无误后,向应用提供访问令牌
4. 客户端应用模式
客户端应用模式是指应用程序以自己的名义,而不是用户的额名义,向“服务提供商”进行认证。在这种模式中,应用以自己的名义要求“服务提供商”提供服务器,其实不存在授权问题。
流程如下:
1. 应用向认证服务器进行身份认证,并要求一个访问令牌
2. 认证服务器确认无误后,向应用提供访问令牌