1. 程式人生 > >OAUTH、OPENID、SAML、CAS做統一認證與授權的聯絡與區別

OAUTH、OPENID、SAML、CAS做統一認證與授權的聯絡與區別

首先,SSO和許可權控制是兩回事:

1、CAS系統解決單點登入問題,對身份認證的具體方法不做要求。

2、Oauth、openID、SAML是身份身份認證授權的規範和標準,是解決認證授權問題的。

OpenID與Oauth協議的區別,可以從其標準定義的核心應用場景來分析:

1、Oauth協議的使用場景:使用者通過第三方照片列印應用列印在某個網站儲存的照片,而不希望洩露照片網站的使用者名稱、密碼等資訊給第三方的照片列印應用。

2、OpenID協議的使用場景,使用者在多個網站註冊,需要註冊並記住多個使用者名稱密碼,openid希望幫使用者提供一個身份ID,可以在多個網站用來登入。登入網站時,使用者選擇用其身份ID登入,跳轉到身份ID頒發的網站輸入使用者名稱、密碼進行身份認證,然後跳轉會網站實現登入。即我們當前很多時候看到的用”QQ帳號登入”、“微信帳號登入”等。

所以我們可以總結,兩個協議的核心區別:

1、Oauth協議的認證憑證必須是資源擁有者發放的;而OpenID的認證憑證可以是你需要登入的網站支援的其它任何正規Openid Provier網站均可。

2、OpenID只是身份的象徵,可以看作是身份證;而Oauth認證憑證,一定是資源擁有者發放的,不僅是使用者在資源擁有者系統身份的憑證,還是其某些授權資源訪問的憑證,可以看作是鑰匙。

3、SAML支援XACML協議進行許可權控制。SAML協議較OAUTH來說確實比較複雜,但是功能也十分強大,支援認證,許可權控制和使用者屬性。

進一步,我們開發時候,如果是單系統身份認證,根據使用場景和技術特點,選擇OpenID、Oauth、或者SAML。如果不是單系統,不僅涉及身份認證,而是涉及眾多系統需要單點登入,則需要選擇CAS認證方案(OpenID/Oauth/SAML)來實現的。

OAuth2.0認證和授權機制講解:

認證和授權過程(包括三方)

  1、服務提供方,使用者使用服務提供方來儲存受保護的資源,如照片,視訊,聯絡人列表。

  2、使用者,存放在服務提供方的受保護的資源的擁有者。

  3、客戶端,要訪問服務提供方資源的第三方應用,通常是網站。在認證過程之前,客戶端要向服務提供者申請客戶端標識。

  

  使用者訪問客戶端的網站,想操作使用者存放在服務提供方的資源。

  客戶端向服務提供方請求一個臨時令牌。

  服務提供方驗證客戶端的身份後,授予一個臨時令牌。

  客戶端獲得臨時令牌後,將使用者引導至服務提供方的授權頁面請求使用者授權。在這個過程中將臨時令牌和客戶端的回撥連線傳送給服務提供方。

  使用者在服務提供方的網頁上輸入使用者名稱和密碼,然後授權該客戶端訪問所請求的資源。

  授權成功後,服務提供方引導使用者返回客戶端的網頁,並返回已授權的臨時憑證。

  客戶端根據已授權的臨時令牌從服務提供方那裡獲取訪問令牌。

  服務提供方根據臨時令牌和使用者的授權情況授予客戶端訪問令牌。

  客戶端使用獲取的訪問令牌訪問該使用者存放在服務提供方上的受保護的資源。(客戶端只能訪問給予它授權的使用者的資源資訊)

參考: