OAuth2.0

OAuth2.0

 

开放授权(Open Authorization,OAuth)是一个开放标准,为用户资源的授权提供了一个安全、开放而又简易的标准。不用将用户名和密码提供给第三方应用,就可以允许用户让第三方应用访问该用户在某一网站上存储的用户资源。

 

基本流程:

  1. 用户打开应用以后,应用要求用户给与授权
  2. 用户同意给与第三方应用授权
  3. 应用使用上一步获得的授权,向认证服务器申请令牌
  4. 认证服务器对第三方应用进行认证以后,确认无误,同意发放令牌
  5. 应用使用令牌,想资源服务器申请获取资源
  6. 资源服务器确认令牌无误,同意向应用开放资源
 

 

 

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. 认证服务器确认无误后,向应用提供访问令牌

 

posted @ 2020-12-25 20:23  将来-小志  阅读(143)  评论(0编辑  收藏  举报