天天看點

權限認證(二):OAuth2協定簡介

  • 角色
資源所有者:例如昵稱和頭像這些資源的擁有者
第三方應用:例如夢學谷網站要使用微信登入,夢學谷相當于微信而言就是第三方
認證伺服器:用于身份認證的伺服器
資源伺服器:存儲使用者資源的伺服器
服務提供商:即是資源伺服器 + 服務提供商      
權限認證(二):OAuth2協定簡介
  • 認證流程
當使用者在夢學谷網站使用微信登入時,即是第三方應用使用其他服務提供商進行登入時
資源所有者向認證伺服器發送一個認證請求,認證伺服器向資源所有者傳回一個認證頁面,資源所有者輸入使用者名和密碼并送出給認證伺服器
認證伺服器認證成功後将一個授權碼傳回給用戶端
第三方應用通過授權碼去認證伺服器,認證伺服器傳回一個令牌給第三方應用
第三方應用拿着令牌去資源伺服器擷取使用者的資源資訊
擷取到資源資訊後進行登入      
權限認證(二):OAuth2協定簡介
  • 授權方式
權碼模式(Authorization Code):功能最完整,流程最嚴密的授權模式。國内各大服務提供商(微信、QQ、微網誌、淘寶 、百度)都采用此模式進行授權。可以确定是使用者真正同意授權;
而且令牌是認證伺服器發放給第三方應用的伺服器,而不是浏覽器上

簡化模式(Implicit): 令牌是發放給浏覽器的,oauth用戶端運作在浏覽器中 ,通過JS腳本去申請令牌。而不是發放給第三方應用的伺服器

密碼模式(Resource Owner Password Credentials):将使用者名和密碼傳過去,直接擷取 access_token 。使用者同意授權動作是在第三方應用上完成 ,而不是在認證伺服器上。第三方應用申請令牌時,
直接帶着使用者名密碼去向
認證伺服器申請令牌。這種方式認證伺服器無法斷定使用者是否真的授權了,使用者名密碼可能是第三方應用盜取來的

用戶端證書模式(Client credentials):用得少。當一個第三應用自己本身需要擷取資源(而不是以使用者的名義),而不是擷取使用者的資源時,用戶端模式十分有用      
  • 授權碼模式
  • 權限認證(二):OAuth2協定簡介
  • 簡化模式
  • 權限認證(二):OAuth2協定簡介
  • 密碼模式
1. 使用者向用戶端直接提供認證伺服器平台的使用者名和密碼。
2. 用戶端将使用者名和密碼發給認證伺服器,向後者請求令牌。
3. 認證伺服器确認無誤後,向用戶端提供通路令牌      
  • 用戶端模式
1. 用戶端向認證伺服器進行身份認證,并要求一個通路令牌。
2. 認證伺服器确認無誤後,向用戶端提供通路令牌      

繼續閱讀