OAuth(開放授權)是一個開放標準,允許用戶讓第三方應用訪問該用戶在某一網站上存儲的私密的資源(如照片,視頻,聯繫人列表),而無需將用戶名和密碼提供給第三方應用。
認證和授權過程
在認證和授權的過程中涉及的三方包括:
1、服務提供方,用戶使用服務提供方來
存儲受保護的資源,如照片,視頻,聯繫人列表。
2、用戶,存放在服務提供方的受保護的資源的擁有者。
3、客戶端,要訪問服務提供方資源的第三方應用,通常是網站,如提供照片打印服務的網站。在認證過程之前,客戶端要向服務提供者申請客戶端標識。
使用OAuth進行認證和授權的過程如下所示:
用戶訪問客戶端的網站,想操作用戶存放在服務提供方的資源。
客戶端向服務提供方請求一個臨時令牌。
服務提供方驗證客戶端的身份後,授予一個臨時令牌。
客戶端獲得臨時令牌後,將用戶引導至服務提供方的授權頁面請求用戶授權。在這個過程中將臨時令牌和客戶端的回調連接發送給服務提供方。
用戶在服務提供方的網頁上輸入用戶名和密碼,然後授權該客戶端訪問所請求的資源。
授權成功後,服務提供方引導用戶返回客戶端的網頁。
客戶端根據臨時令牌從服務提供方那裏獲取訪問令牌。
服務提供方根據臨時令牌和用戶的授權情況授予客戶端訪問令牌。
客戶端使用獲取的訪問令牌訪問存放在服務提供方上的受保護的資源。
OAuth 2.0的新特性(6種全新流程)
1、User-Agent Flow – 客戶端運行於用戶代理內(典型如web瀏覽器
)。
2、Web Server Flow – 客戶端是web服務器程序的一部分,通過http request接入,這是OAuth 1.0提供的流程的簡化版本。
3、Device Flow – 適用於客戶端在受限設備上執行操作,但是終端用戶單獨接入另一臺電腦或者設備的瀏覽器
4、Username and Password Flow – 這個流程的應用場景是,用戶信任客戶端處理身份憑據,但是仍然不希望客戶端儲存他們的用戶名和密碼,這個流程僅在用戶高度信任客戶端時才適用。
5、Client Credentials Flow – 客戶端適用它的身份憑據去獲取access token,這個流程支持2-legged OAuth的場景。
6、Assertion Flow – 客戶端用assertion去換取access token,比如
SAML assertion。