一、理解什么是OAuth2
是開放授權的一個標准,允許用戶授權B應用不提供帳號密碼的方式去訪問該用戶在A應用服務器上的某些特定資源。
例子:咕咚app通過微信號方式登錄,獲取到用戶的微信名和微信頭像等資料。
二、OAuth2四種授權模式
2.1 授權碼模式
授權碼模式(authorization code)是功能最完整、流程最嚴密的授權模式,code保證了token的安全性,即使code被攔截,由於沒有app_secret,也是無法通過code獲得token的。
2.1.1 角色行為與功能
-
資源所有者
只需要允許或拒絕第三方應用獲得授權 -
第三方應用
申請成為資源服務器的第三方應用
獲取資源服務器提供的資源 -
授權服務器
提供授權許可code、令牌token等 -
資源服務器
提供給第三方應用注冊接口,需要提供給第三方應用app_id和app_secret
提供給第三方應用開放資源的接口
2.1.2 授權碼模式授權方式順序圖

2.2隱式授權模式/簡化模式
和授權碼模式類似,只不過少了獲取code的步驟,是直接獲取令牌token的,適用於公開的瀏覽器單頁應用,令牌直接從授權服務器返回,不支持刷新令牌,且沒有code安全保證,令牌容易因為被攔截竊聽而泄露。
2.3密碼模式
使用用戶名/密碼作為授權方式從授權服務器上獲取令牌,一般不支持刷新令牌。
2.4客戶端憑證模式
一般用於資源服務器是應用的一個后端模塊,客戶端向認證服務器驗證身份來獲取令牌。