更新來解決您的編輯:
這裏有一些SAML 2個選項,你可以使用。
Shibboleth的SP是產品實現SAML 2.0你,但OpenSAML只是一個庫與您可以實現一個SAML 2.0的解決方案。圖書館本身是低層次的,甚至沒有接近成爲SSO解決方案。 OpenSAML本身不是SAML 2.0解決方案。
要使用OpenSAML或任何 SAML 2.0解決方案,您將需要交換元數據,如下所述。使用OpenSAML,您也必須爲您自己的MetaData手動生成XML文件。如下所述,這將是很多工作。 SAML 2.0產品將爲您生成該XML元數據文件,並生成用於加密和簽署SAML 2.0斷言的必需RSA密鑰。使用OpenSAML,您將獲得API支持來加載部分XML文件和API以生成和解析斷言,但是您將編寫實際構建SSO交互的Java代碼。
SP確實是而不是一定需要ActiveDirectory/LDAP,但是在Web應用程序中需要一些類型的目錄來跟蹤用戶。如果您的Web應用程序已經有一些用戶的概念,並且可以使用這些信息將它們與IdP的用戶概念相關聯,則可以根據SAML 2.0斷言中的屬性值將這些信息映射到Web應用程序中。 (如果你的Web應用程序並不關心這些用戶是誰,那麼你可以簡單地允許基於用戶是「有效的」訪問應用程序。)
-
集成Shibboleth2 SSO有一個Java Web應用程序不是太難。使用OpenSAML來實現SSO是可行的,但將Apache服務器與Shibboleth集成將會花費更多的精力。
使用Shibboleth需要Apache2的Shibboleth模塊已啓用和您已安裝Shibboleth SP守護程序。通常情況下,這些將在同一個盒子上。如果您使用Tomcat託管Java Web應用程序,那麼我建議您使用mod_proxy_ajp在Apache2 HTTP服務器和Tomcat之間進行通信。這樣你就可以把Shibolleth提供的變量作爲servlet的Request屬性。 (您必須在shibboleth2.xml中將變量前綴設置爲「AJP_」。)
Shibboleth SP包已經可以處理所有您可能會遇到的標準SAML SSO場景,但試圖實現其中一種OpenSAML直接在您的Java應用程序中充滿了危險,無論是讓它工作還是使其安全。如果您使用OpenSAML,您還將增加網絡應用程序的大小。值得注意的是,Shibboleth SP不是用Java編寫的,所以你將不會有使用OpenSAML的例子,但是你可以通過查看Shibboleth IdP代碼(這是一個Java Web應用程序)來獲得一些洞察。
無論哪種情況,您都需要將您的SP元數據(通過Shibboleth SP軟件包輕鬆創建)與您的身份提供者交換,並且還可以在您的SP上獲取身份提供者的元數據(您也可以輕鬆使用Shibboleth SP軟件包只需設置一個MetadataProvider)。
一旦您習慣使用Shibboleth的在線文檔,將會對您有所幫助。
如果您可以使用Shibboleth SP軟件包,而不是使用OpenSAML庫實施SAML 2 SSO解決方案,我認爲您將有更大的成功機會。我無法與其他所有Java SAML 2 SSO解決方案進行對話,但與簡單的Shibboleth 2 SP相比,它們看起來都很大且過於企業化。
你能舉出'現存Java SP選項'的例子嗎? – mahatmanich 2012-01-10 22:54:13