oAuth 2 0協議解析

2021-06-28 17:44:43 字數 2187 閱讀 6267

部落格:[

完整的oauth 2.0協議流包括4個主體,6個步驟。

4個主體分別是:

- 資源擁有者:可以是人,負責授權工作。對open api來說,即發布方。發布方審批呼叫者的申請,通過後,即完成授權,體現為資料庫中的記錄。

- 客戶端:一般是第三方應用程式。對於open api來說,即呼叫者。

- 授權伺服器:負責完成授權憑證的發放和驗證工作。

- 資源伺服器:負責提供資源或服務。

客戶端要發起呼叫,面對對方3個角色,需要分別依次交流,每個角色一去一回,共6個步驟。

流程如下,首先是客戶端和資源擁有者交流:

客戶端向資源擁有者發起申請,請求許可。

資源擁有者批准申請,傳送許可憑證grant_code給客戶端。

客戶端提交申請的時候提交了invoker uri,授權伺服器可以發起如下請求,傳回grant code。

http://invoker_uri?grant_code=******xx
invoker uri在整個互動過程中要保持一致,對資源發起呼叫也必須來來自這個uri。

接下來就是客戶端和授權伺服器互動的過程了。

客戶端向授權伺服器發起申請,提交grant_code、client_id、invoker_uri。

授權伺服器返回令牌token給客戶端。

獲得token之後,客戶端暫時不需要直接和授權伺服器打交道了。

客戶端通過token,可以愉快地訪問資源了,直到token過期、失效。

接下來,客戶端和資源伺服器交流,享受服務。

客戶端向資源伺服器端發起請求,攜帶token。

資源伺服器驗證token,提供服務。

上面的過程中,客戶端直接和資源擁有者互動,oauth 2.0推薦授權伺服器為中介,客戶端和資源擁有者不直接溝通。

以上即oauth 2.0的big picture。

oauth 2.0定義了4種授權模式,以下僅以授權碼模式為例。以下假定讀者熟悉授權碼模式的流程。

協議的關鍵是授權伺服器的實現。

在規劃授權伺服器功能時,不要考慮任何具體業務。

授權伺服器完成以下幾項工作:

- 發放token

- 更新token

- 驗證token

發放token

token的發放過程如下:

首先,客戶端發起申請,如下:

http://auth_server/authorize?response_type=code&client_id=***&state=ddd&redirect_uri=http***x
傳送申請的位址需要和引數redirect_uri的值一致。

成功後,返回auth_code,發回狀態碼302。

location: http***x?auth_code=ssss&state=ddd
傳回的auth_code有效期通常是10分鐘,只能使用一次。

接下來,客戶端發起請求,申請正式token。

http://auth_server/authorize?grant_type=authorization_code&auth_code=ddd&&redirect_uri=http***x
授權伺服器返回:

access_token,token_type,expires_in,refresh_token,scope

重發token

http://auth_server/authorize?grant_type=refresh_token&refresh_token=***xx
驗證token
http://auth_server/authenticate?access_token=ddd&invoker_uri=***&scope=ss
inte***ce authorizationserver

inte***ce granthandler

inte***ce authorizationcodegranthandler extends granthandler

為了實現上述功能,授權伺服器還應該實現使用者註冊、授權申請、授權審批、資源定義、資源組管理(即scope)、授權碼管理(grant code)、token管理等功能。

OAuth 2 0協議原理

oauth oauth 開放授權 是乙個開放標準,允許使用者授權第三方移動應用訪問他們儲存在另外的服務提供者上的資訊,而不需要將使用者名稱和密碼提供給第三方移動應用或分享他們資料的所有內容。oauth 2.0中最關鍵的步驟在於使用者授權這一步。使用者授權有四種模式 授權碼模式 authorizati...

oauth2 0授權協議

參考文章 一.oauth是什麼?oauth的英文全稱是open authorization,它是一種開放授權協議。oauth目前共有2個版本,2007年12月的1.0版 之後有乙個修正版1.0a 和2010年4月的2.0版,1.0版本存在嚴重安全漏洞,而2.0版解決了該問題,下面簡單談一下我對oau...

OAuth 2 0系列教程

作者 jakob jenkov譯者 林浩校對 郭蕾 oauth是openid的乙個補充,但是完全不同的服務。oauth 2.0 是目前比較流行的做法,它率先被google,yahoo,microsoft,facebook等使用。之所以標註為 2.0,是因為最初有乙個1.0協議,但這個1.0協議被弄得...