2012-01-10 32 views
6

我得到了幾個SAML實施問題來清除我的困惑...爲了實現SAML,我需要在我的主機上安裝Shibboleth SP嗎?

我需要在java web應用程序中實現SSO。

  1. 爲了做到這一點,我需要我的主機like so上安裝Shibboleth的SP,或者我可以提供通過OpenSAML SP的功能?

  2. 我假設shibboleth和OpenSAML一樣,但只是在Web服務器級別上,而OpenSAML會在軟件端做到這一點。這個假設是否正確?

編輯:所以陳詞濫調(根據斯科特·康託)是建立與OpenSAML ... 沒有我的假設仍持有,但?

  1. 真正所需要使用OpenSAML?只是IdP的網址和註冊與IDP?

  2. 我是否需要提供一個SP目錄,例如ActiveDirectory的/ LDAP?

編輯:謝謝你的答案,但有人可以直接回答問題 以上,並闡述他們...

回答

3

使用OpenSAML需要什麼?只是IdP的網址和註冊與IDP?

您需要Java和Web容器,並在您的戰爭中包含opensaml庫。

您需要本地緩存IdP元數據,或者每次想要發送AuthnRequest或處理SAMLResponse時查看它。您還需要在IdP端註冊您的SP元數據。

如果您使用Shibboleth作爲您的IdP,則應在conf/relying-party.xml文件中設置SP元數據。

是否需要提供SP目錄,例如ActiveDirectory的/ LDAP?

爲了登錄IdP,您需要在IdP端設置ldap或數據庫服務器,並將其配置在conf/attribute-resolver.xml和conf/login.config中。

1

你應該張貼這樣的問題,相關的郵件列表由Shibboleth項目運行。

OpenSAML是實現SAML解決方案的一個非常低的水平的工具包,Shibboleth的是SSO封裝爲Web應用程序支持SAML恰好與OpenSAML建造。構建安全解決方案很複雜,需要專業知識如果你不具備這些專業知識,你會做它的一個糟糕的工作,並OpenSAML未記錄這樣一個典型的開發人員可以從頭開始構建的解決方案。

考慮使用一個完整的實現,無論是Shibboleth的或別的東西。如果您不能使用Apache和本機代碼並且需要Java,那麼您應該嘗試存在的現有Java SP選項之一。即使它們不足,你也應該建立在它們之上,而不是重複它們。

+1

你能舉出'現存Java SP選項'的例子嗎? – mahatmanich 2012-01-10 22:54:13

13

更新來解決您的編輯:

這裏有一些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相比,它們看起來都很大且過於企業化。

-3

是的,你應該在你的服務器或你的機器上安裝SP。它將取決於您的網絡服務器,如IIS或Apache。

相關問題