參考文章
一.oauth是什麼?
oauth的英文全稱是open authorization,它是一種開放授權協議。oauth目前共有2個版本,2023年12月的1.0版(之後有乙個修正版1.0a)和2023年4月的2.0版,1.0版本存在嚴重安全漏洞,而2.0版解決了該問題,下面簡單談一下我對oauth2.0的理解。
二.oauth2.0有什麼用?
使用 oauth 2.0 認證的的好處是顯然易見的。你只需要用同乙個賬號密碼,就能在各個**進行訪問,而免去了在每個**都進行註冊的繁瑣過程。
簡單概括,就是用於第三方在使用者授權下調取平台對外開放介面獲取使用者相關資訊。
oauth引入了乙個授權環節來解決上述問題。第三方應用請求訪問受保護資源時,資源伺服器在獲准資源使用者授權後,會向第三方應用頒發乙個訪問令牌(accesstoken)。該訪問令牌包含資源使用者的授權訪問範圍、授權有效期等關鍵屬性。第三方應用在後續資源訪問過程中需要一直持有該令牌,直到使用者主動結束該次授權或者令牌自動過期。
三.認證授權過程
四.詳解oauth2.0的授權碼簡化模式?
簡單概括,就是用於第三方在使用者授權下調取平台對外開放介面獲取使用者相關資訊。
有三個關鍵字:第三方,使用者,平台,關係如下圖
看起來很簡單對吧,其實授權的部分,要比上圖展示的複雜一丟丟,下面來講解一下授權的部分。
第三方的準備工作做好了,下面就是具體運作流程了。(各大平台大多使用授權碼模式——authorization code,因為它相比其它幾種模式更為嚴謹,這裡我僅分析一下該模式的原理)
這裡我們假設乙個場景,就是想用『雲列印』來列印自己『微博的關注列表』。
簡圖如下:
詳圖如下:
第④步引數:
response_type:指授權型別,必選,這裡填固定值『code』
redirect_uri:指重定向uri,可選
scope:指申請的許可權範圍,可選
state:指客戶端當前狀態,可選,若填了,則認證伺服器會原樣返回該值
第⑥步引數:
grant_type:指使用哪種授權模式,必選,這裡填固定值『authorization_code』
code:指從第⑤步獲取的code,必選
redirect_uri:指重定向uri,必選,這個值需要和第④步中的redirect_uri保持一致
第⑧步引數:
access_token:指訪問令牌,必選,這裡填第⑦步獲取的access_token
token_type:指令牌型別,必選,大小寫不敏感,bearer型別 / mac型別
expires_in:指過期時間,單位秒,當其他地方已設定過期時間,此處可省略該引數
refresh_token:指更新令牌,可選,用即將過期token換取新token
scope:指許可權範圍,可選,第④步中若已申請過某許可權,此處可省略該引數
到這裡,oauth2.0 授權碼模式的認證過程就完成了,原理還算比較簡單,就是較為繁瑣,但是不算難。
注意:1.code時效較短,多為10s-10min,每次獲得的code僅可使用一次,且code與client_id和redirect_uri有 一一對應關係。
2.access token 有過期時間,多為10-15天。(過期處理有2種,請求使用者重新授權/refreshtoken,一般多用重新授權。)
3.在請求時,引數中包含重定向位址的,需要和第三方在授權方平台報備時留的位址前部一致
4.關於token_type的兩種型別有什麼區別,有個部落格寫的很詳細,推薦閱讀:www.cnblogs.com/xiongmaomengnan/p/6785155.html
此處奉上找了好久才找到的oauth2 rfc6749中文翻譯:
本人能力有限,錯誤之處,敬請指正。
標準的認證過程
oauth認證和授權的過程如下:
1、使用者訪問第三方****,想對使用者存放在服務商的某些資源進行操作。
2、第三方**向服務商請求乙個臨時令牌。
3、服務商驗證第三方**的身份後,授予乙個臨時令牌。
4、第三方**獲得臨時令牌後,將使用者導向至服務商的授權頁面請求使用者授權,然後這個過程中將臨時令牌和第三方**的返回位址傳送給服務商。
5、使用者在服務商的授權頁面上輸入自己的使用者名稱和密碼,授權第三方**訪問所相應的資源。
6、授權成功後,服務商將使用者導向第三方**的返回位址。
7、第三方**根據臨時令牌從服務商那裡獲取訪問令牌。
8、服務商根據令牌和使用者的授權情況授予第三方**訪問令牌。
9、第三方**使用獲取到的訪問令牌訪問存放在服務商的對應的使用者資源。
Oauth2 0授權方式
oauth2.0是一套標準。這個標準解決了這樣的乙個問題。給第三方應用乙個臨時密碼,過期作廢,而且這個密碼的訪問許可權可由我隨時取消。這樣就足夠安全了。這個臨時密碼就是access token。發放access token的方法就多種多樣了,這些方法叫做授權模式。oauth2為我們提供了四種授權方式...
OAuth2 0認證授權
授權碼模式 authorization code 是功能最完整 流程最嚴密的授權模式。它的特點就是通過客戶端的後台伺服器,與 服務提供商 的認證伺服器進行互動。client id x client secret x response type 表示授權型別,必選項,此處的值固定為 code clie...
OAuth 2 0授權框架
背景介紹 oauth2.0授權框架支援第三方應用程式以獲取對http服務的有限訪問權,通過協調批准互動來代表資源所有者,在資源所有者和http服務之間,或者通過允許第三方應用程式代表自己獲取訪問許可權。這個規範取代並淘汰了所描述的oauth1.0協議 一 傳統模式的身份驗證模型 在傳統的客戶端 伺服...