OAuth2.0的四种受权模式

 

1.什么是OAuth2前端

OAuth(开放受权)是一个开放标准,容许用户受权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不须要将用户名和密码提供给第三方移动应用或分享他们数据的全部内容,OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即彻底废止了OAuth1.0。vue

2.应用场景react

第三方应用受权登陆:在APP或者网页接入一些第三方应用时,时长会须要用户登陆另外一个合做平台,好比QQ,微博,微信的受权登陆。git

原生app受权:app登陆请求后台接口,为了安全认证,全部请求都带token信息,若是登陆验证、请求后台数据。github

先后端分离单页面应用(spa):先后端分离框架,前端请求后台数据,须要进行oauth2安全认证,好比使用vue、react后者h5开发的app。spring

3.名词定义后端

(1) Third-party application:第三方应用程序,本文中又称"客户端"(client),好比打开知乎,使用第三方登陆,选择qq登陆,这时候知乎就是客户端。浏览器

(2)HTTP service:HTTP服务提供商,本文中简称"服务提供商",即上例的qq。安全

(3)Resource Owner:资源全部者,本文中又称"用户"(user),即登陆用户。服务器

(4)User Agent:用户代理,本文中就是指浏览器。

(5)Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器。

(6)Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,能够是同一台服务器,也能够是不一样的服务器。

1. OAuth2简易实战(一)-四种模式

1.1. 隐式受权模式(Implicit Grant)

 

  •  第一步:用户访问页面时,重定向到认证服务器。
  •  第二步:认证服务器给用户一个认证页面,等待用户受权。
  •  第三步:用户受权,认证服务器想应用页面返回Token
  •  第四步:验证Token,访问真正的资源页面

 

 

1.2. 受权码受权模式(Authorization code Grant)

 

  •  第一步:用户访问页面
  •  第二步:访问的页面将请求重定向到认证服务器
  •  第三步:认证服务器向用户展现受权页面,等待用户受权
  •  第四步:用户受权,认证服务器生成一个code和带上client_id发送给应用服务器
  •          而后,应用服务器拿到code,并用client_id去后台查询对应的client_secret
  •  第五步:将code、client_id、client_secret传给认证服务器换取access_token和  
  •          refresh_token
  •  第六步:将access_token和refresh_token传给应用服务器
  •  第七步:验证token,访问真正的资源页面

 

案例Github自取:https://github.com/PinkPig-cq/springSecurityoAuth

1.3. 密码模式(Resource Owner Password Credentials Grant)

 

  •  第一步:用户访问用页面时,输入第三方认证所须要的信息(QQ/微信帐号密码)
  •  第二步:应用页面那种这个信息去认证服务器受权
  •  第三步:认证服务器受权经过,拿到token,访问真正的资源页面

优势:不须要屡次请求转发,额外开销,同时能够获取更多的用户信息。(都拿到帐号密码了)

缺点:局限性,认证服务器和应用方必须有超高的信赖。(好比亲兄弟?)

应用场景:自家公司搭建的认证服务器

 

 

1.4. 客户端凭证模式(Client Credentials Grant)

 

 

 

 

  •  第一步:用户访问应用客户端
  •  第二步:经过客户端定义的验证方法,拿到token,无需受权
  •  第三步:访问资源服务器A
  •  第四步:拿到一次token就能够畅通无阻的访问其余的资源页面。

这是一种最简单的模式,只要client请求,咱们就将AccessToken发送给它。这种模式是最方便但最不安全的模式。所以这就要求咱们对client彻底的信任,而client自己也是安全的。

所以这种模式通常用来提供给咱们彻底信任的服务器端服务。在这个过程当中不须要用户的参与。

相关文章
相关标签/搜索