統一身份認證與授權標準介紹:OpenID,OAuth2,SAML

統一身份認證與授權中三種最常見的Web安全協議是OpenID,OAuth和SAML。本文通過舉例來介紹這三種協議的含義和之間的不同。

授權和身份驗證基礎知識

做爲一個面向公衆的網站都希望能夠對每個用戶進行身份驗證和授權。身份驗證意味着驗證某人確實是他們聲稱的身份。授權意味着決定某個用戶能夠訪問哪些資源,以及允許他們對這些資源執行哪些操作。

對於Facebook或Google等網站,用戶可以使用一組憑證登錄到一個應用程序。然後可以使用同一組憑證登錄相關網站或應用程序。而對於企業來說,可能有一個面向內部的員工門戶網站,通過讓員工登錄門戶,並讓該門戶自動通過其他Intranet站點對用戶進行身份驗證。這種稱爲單點登錄(SSO)的想法允許用戶輸入一個用戶名和密碼可以訪問多個應用程序。

這樣做對用戶來說非常好,他們只需管理相關網站的一個用戶名和密碼,同時可以避免多次登錄。用戶(單組)憑證將存儲在一個數據庫中,而不是存儲在多個數據庫中的多個憑證。這也意味着各種應用程序的開發人員不必存儲密碼,而是接受來自可信來源的身份證明或授權。

實施SSO有多種解決方案。三種最常見的Web安全協議是OpenID,OAuth和SAML。

OpenID

OpenID是一種開放的身份驗證標準,由非營利性OpenID Foundation推廣。Google,WordPress,Yahoo和PayPal等組織都支持使用OpenId對用戶進行身份驗證。

用戶必須通過OpenID帳戶身份提供商(例如,谷歌)得到一個OpenID。然後,用戶將使用該帳戶登錄任何接受OpenID身份驗證的網站(依賴方)(例如YouTube或其他接受Google帳戶登錄的網站)。OpenID標準爲身份提供者和依賴方之間必須進行的通信提供了框架。

這種交換可以與過海關進行比較。想象一下,愛麗絲是一個想要訪問美國的加拿大公民。在邊境,美國要求提供身份證明(她的護照)。由於美國政府信任加拿大政府爲其公民提供的身份證明,美國接受愛麗絲的護照作爲其身份的可靠證據,因此,讓她進入美國。在此示例中,Alice是最終用戶,US是依賴方,Canada是身份提供者。

這種交換是有效的,因爲Alice可以向美國提供來自美國信任的實體的身份證明。同樣,依賴方(或用戶嘗試登錄的網站)必須信任驗證用戶身份的OpenID身份提供者。

OAuth2

相比之下,OAuth2是授權的開放標準。OAuth2也是OpenID Connect的基礎,OpenID Connect在OAuth2(授權)之上提供OpenID(身份驗證),以獲得更完整的安全解決方案。OpenID Connect(OIDC)於2014年初創建。

OAuth2提供安全的委派訪問,這意味着稱爲客戶端的應用程序可以代表用戶在資源服務器上執行操作或訪問資源,而無需用戶與應用程序共享其憑據。OAuth2通過允許令牌由身份提供商向這些第三方應用程序發佈,並經用戶批准來實現此目的。然後,客戶端使用令牌代表用戶訪問資源服務器。

然而,Twitter的OAuth指南 稱OAuth2是一種身份驗證標準。爲什麼要這麼說呢?事實證明,授權可以用作僞認證的一種形式。

OAuth2的授權使用案例可能如下:Alice正在離開城鎮,她希望她的朋友鮑勃能夠幫忙照看房子。愛麗絲給鮑勃房子鑰匙,他現在有權進入房子。密鑰授予他進入房屋的授權,因爲授權涉及用戶應該訪問哪些資源,以及他們可以使用這些資源做什麼。在這個比喻中,房主是用戶,鮑勃是客戶,門鎖是身份提供者,房子是資源服務器。

通過假設擁有房屋鑰匙的人是房主,可以將其映射成僞認證用例。然而,正如我們可以看到鮑勃坐在愛麗絲家中,但他並不是房主。

SAML

SAML是三者中最古老的標準,最初於2001年開發,其最新的主要更新發佈於2005年.SAML,發音爲“sam-el”,代表安全斷言標記語言。它是一個提供身份驗證和授權的開放標準。

與其他兩個標準的術語類似,SAML定義了一個主體,即最終用戶嘗試訪問資源。有一個服務提供程序,它是委託人試圖訪問的Web服務器。還有一個身份提供者,它是擁有主體身份和憑據的服務器。

美國/加拿大的比喻也可以在這裏使用。愛麗絲希望從加拿大進入美國。美國希望驗證她的身份或其他有關她的信息 - 她是否擁有允許她在美國駕駛的有效駕駛執照 - 向加拿大提出有關Alice的身份驗證和/或授權信息的請求。加拿大通過將所要求的信息發送到所請求的地址以及加拿大確實是該消息的發送者的一些證據來做出迴應。這個證據可能像以前一樣採用護照的形式,或官方的政府文件或簽證(涉及授權請求)。而且,和以前一樣,該系統的前提是美國信任加拿大正在發放駕駛執照,簽證等。

在我們的示例中,Alice是委託人,美國是服務提供商,加拿大再次是身份提供者。美國向加拿大提出的請求類似於XML消息,該消息說明正在請求哪些信息,誰在詢問以及應該向誰返回響應。加拿大的回覆將被稱爲斷言,類似於OpenID或OAuth2的令牌。此斷言可以包含有關身份驗證,授權和/或屬性(有關用戶的特定信息,如電子郵件或電話號碼)的聲明。

SAML 2.0規範定義了斷言(如上所述); 協議:即斷言請求和響應; 綁定:這些請求和響應如何在服務提供者和身份提供者之間發生,使用標準通信方法(例如HTTP POST); 和配置文件:它們是各種用例(如SSO)的斷言,協議和綁定的組合。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章