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自己也是安全的。

所以這種模式通常用來提供給咱們徹底信任的服務器端服務。在這個過程當中不須要用戶的參與。

相關文章
相關標籤/搜索