單一登錄是一次認證的能力,并且能夠使用已認證的身份在應用程序之間無縫切換。
在Intranet內或在一個開發組織控制下的應用程序之間,可以通過生成一個sessionid并使用cookie傳遞它來輕松實現Web應用程序的單點登錄。 但是,這種解決方案是專有的,如果您需要離開Intranet并訪問云上的其他應用程序,則該解決方案將無法使用。 為了與云上的應用程序進行互操作,需要基于標準的解決方案。
一個相關的概念和好處是聯盟身份。 組織可以同意一個通用名稱來指代用戶。 用戶及其屬性只需要在一個地方創建,其他人可以參考此信息。
在此博客中,我們簡要檢查了兩種可用于在云上進行單點登錄的流行協議:SAML和OpenId。
OpenId
OpenId解決的問題是,作為用戶,您不必維護和向訪問的每個站點提供密碼。
您使用一個稱為OpenId提供程序的提供程序來維護密碼或其他身份驗證憑據。
您訪問的網站或應用程序需要您的身份證明,因此需要OpenId提供程序來驗證您所聲稱的身份。 這就是所謂的依賴方。
OpenId協議的基礎是:
1.您訪問Web應用程序(依賴方)并輸入OpenId
2.根據您的OpenId,依賴方確定誰是您的OpenId提供者。
3.依賴方將您的請求重定向到OpenId提供程序。
4.如果您已通過身份驗證,則將跳過此步驟。
OpenId提供程序通過詢問密碼或其他信息來對您進行身份驗證。 提供者警告您,依賴方正在請求有關您的信息。
5.該請求被重定向回依賴方,在此向您顯示您嘗試訪問的URL。
該協議不要求提供者或依賴方在任何地方進行注冊。 它使用簡單的HTTP請求和響應。 協議消息是純文本鍵值對。 該協議可與現代的“ Web20” AJAX風格的應用程序很好地配合使用。
OpenId協議起源于面向消費者的網站,例如Google,Twitter,Facebook等,并且在該協議中很流行。
在OpenId規范中描述了OpenId規范
openid4java中有一個OpenId的Java實現
SAML(安全性聲明標記語言)
SAML是基于XML的協議,可實現基于Web的身份驗證,授權和單點登錄。
SAML包括一個依賴方請求一個聲明,以及一個SAML提供者響應該聲明。
斷言示例包括:
- 身份驗證斷言:在時間t使用某某方法驗證了該用戶。
- 屬性聲明:此用戶具有標題超級管理者。
- 授權聲明:該用戶有權刪除文件xyz.doc。
典型的SAML交互如下:
1.用戶嘗試訪問作為依賴方的URL或Web應用程序
2.依賴方創建一個SAML身份驗證請求。
3.依賴方將用戶瀏覽器重定向到SAML提供程序。 該請求中嵌入了SAML身份驗證請求。 4. SAML提供程序評估SAML請求并驗證用戶身份。 5. SAML提供向用戶瀏覽器返回SAML身份驗證響應。 6.瀏覽器將SAML響應轉發回依賴方。 7.依賴方驗證并解釋SAML響應。 8.如果響應表明身份驗證成功,則將用戶重定向到他最初嘗試訪問的URL。
SAML具有配置文件的概念。 交互因配置文件而異。 上面的交互是Web SSO配置文件。
SAML的起源更多于企業軟件,Web服務,B2B通信中,并且可以追溯到2000年代初期XML非常流行的時候。 實際上,SAML1.x僅具有SOAP綁定。
SAML規范位于SAML規范中
OpenSAML上有一個SAML實現
我應該使用哪種協議?
OpenId是一個更簡單的協議。 但具有SAML具有更多功能。
OpenId支持發現OpenId提供程序。 使用SAML通常需要昂貴的SAML項目。
OpenId僅支持服務提供商發起的SSO。 您轉到服務提供商的網站,他們需要身份驗證。 他們開始與OpenId提供程序進行對話。 SAML還可以支持身份提供商發起的SSO。 您已通過公司門戶的身份驗證。 貴公司有一個商務旅行合作伙伴旅行網站。 使用SAML,您可以從公司的門戶網站(SAML提供程序)轉到合作伙伴網站(依賴方),而無需重新認證。
SAML比OpenId更長。 SAML在企業中更受歡迎,而OpenId在面向消費者的應用程序中更受歡迎。
OpenId和SAML都依賴外部傳輸層安全協議(例如SSL)來保證協議消息的安全。
如果您要啟動一個新網站并希望接受來自其他流行網站(例如google或twitter)的用戶,則可以考慮使用OpenId。 但是,如果您是一家企業,并且希望通過身份驗證的用戶無需重新身份驗證即可訪問您的合作伙伴站點,則可能需要SAML。
總而言之,SAML是一種功能豐富的協議,在企業中更為流行。 OpenId是更簡單的協議,但有一些限制。
參考: 云的單一登錄: The Khangaonkar Report博客上的JCG合作伙伴 Manoj Khangaonkar的SAML和OpenId 。
相關文章 :
- 使用Spring Security保護GWT應用程序
- 在云中開發和測試
- 使用Spring Security 3.1保護RESTful Web服務,第3部分
- Apache Shiro:簡化應用程序安全性
- 使用Spring Security 3.1的RESTful服務進行基本身份驗證和摘要身份驗證,第6部分
- 2011年:軟件安全性和質量狀況
翻譯自: https://www.javacodegeeks.com/2011/12/single-sign-on-for-cloud-saml-openid.html