OAUTH協議介紹

OAUTH協議爲用戶資源的受權提供了一個安全的、開放而又簡易的標準。與以往的受權方式不一樣之處是OAUTH的受權不會使第三方觸及到用戶的賬號信息(如用戶名與密碼),即第三方無需使用用戶的用戶名與密碼就能夠申請得到該用戶資源的受權,所以OAUTH是安全的。oAuth是Open Authorization的簡寫。html

特色
(1). 簡單:無論是OAUTH服務提供者仍是應用開發者,都很易於理解與使用;
(2). 安全:沒有涉及到用戶密鑰等信息,更安全更靈活;
(3). 開放:任何服務提供商均可以實現OAUTH,任何軟件開發商均可以使用OAUTH;瀏覽器

三個URL
Request Token URL: 獲取未受權的Request Token服務地址;
User Authorization URL: 獲取用戶受權的Request Token服務地址;
Access Token URL: 用受權的Request Token換取Access Token的服務地址;安全

版本
OAuth Core 1.0 版本發佈於2007年12月4日,因爲存在可被會話定向攻擊(session fixation attack)的緣故,2009年6月24日發佈了OAuth Core 1.0 Revision A 版本。最終在2010年4月,OAuth成爲了RFC標準: RFC 5849: The OAuth 1.0 Protocol。服務器

OAuth 2.0的草案是在2010年5月初在IETF發佈的。OAuth 2.0是OAuth協議的下一版本,但不向後兼容OAuth 1.0。 OAuth 2.0關注客戶端開發者的簡易性,同時爲Web應用,桌面應用和手機,和起居室設備提供專門的認證流程。規範還在IETF OAuth工做組的開發中,按照Eran Hammer-Lahav的說法,OAuth於2010年底完成。session

 

OAuth 2.0介紹框架

OAuth(開放受權)是一個開放標準,容許用戶讓第三方應用訪問該用戶在某一網站上存儲的私密的資源(如照片,視頻,聯繫人列表),而無需將用戶名和密碼提供給第三方應用。Auth容許用戶提供一個令牌給第三方網站,一個令牌對應一個特定的第三方網站,同時該令牌只能在特定的時間內訪問特定的資源。網站

在認證和受權的過程當中涉及的三方角色:
一、服務提供方,用戶使用服務提供方來存儲受保護的資源,如照片,視頻,聯繫人列表。
二、用戶,存放在服務提供方的受保護的資源的擁有者。
三、客戶端,要訪問服務提供方資源的第三方應用,一般是網站,如提供照片打印服務的網站。在認證過程以前,客戶端要向服務提供者申請客戶端標識
受權過程:
用戶向操做存放在服務提供方的資源。
用戶登陸客戶端向服務提供方請求一個臨時令牌。
服務提供方驗證客戶端的身份後,授予一個臨時令牌。
客戶端得到臨時令牌後,將用戶引導至服務提供方的受權頁面請求用戶受權。在這個過程當中將臨時令牌和客戶端的回調鏈接發送給服務提供方。
用戶在服務提供方的網頁上輸入用戶名和密碼,而後受權該客戶端訪問所請求的資源。
受權成功後,服務提供方引導用戶返回客戶端的網頁。
客戶端根據臨時令牌從服務提供方那裏獲取訪問令牌。
服務提供方根據臨時令牌和用戶的受權狀況授予客戶端訪問令牌。
客戶端使用獲取的訪問令牌訪問存放在服務提供方上的受保護的資源。spa

 

流程圖:.net

【如下內容摘自OAuth2.0 規範中的流程說明】code

這裏寫圖片描述

(A)用戶打開客戶端之後,客戶端要求用戶給予受權。 
(B)用戶贊成給予客戶端受權。 
(C)客戶端使用上一步得到的受權,向認證服務器申請令牌。 
(D)認證服務器對客戶端進行認證之後,確認無誤,贊成發放令牌。 
(E)客戶端使用令牌,向資源服務器申請獲取資源。 
(F)資源服務器確認令牌無誤,贊成向客戶端開放資源。

 

客戶端必須獲得用戶的受權(authorization grant),才能得到令牌(access token)。

OAuth 2.0定義了四種受權方式。

  • 受權碼模式(authorization code)【是功能最完整、流程最嚴密的受權模式。它的特色就是經過客戶端的後臺服務器,與」服務提供商」的認證服務器進行互動】
  • 簡化模式(implicit)【不經過第三方應用程序的服務器,直接在瀏覽器中向認證服務器申請令牌,跳過了」受權碼」這個步驟,所以得名。全部步驟在瀏覽器中完成,令牌對訪問者是可見的,且客戶端不須要認證。】
  • 密碼模式(resource owner password credentials)【用戶向客戶端提供本身的用戶名和密碼。客戶端使用這些信息,向」服務商提供商」索要受權。 】通常不用
  • 客戶端模式(client credentials)【指客戶端以本身的名義,而不是以用戶的名義,向」服務提供商」進行認證。嚴格地說,客戶端模式並不屬於OAuth框架所要解決的問題。】

 

參考網址:https://www.cnblogs.com/flashsun/p/7424071.htmlhttps://blog.csdn.net/iceiceicpc/article/details/75012385https://blog.csdn.net/jing12062011/article/details/78147306

相關文章
相關標籤/搜索