2017-10-09 114 views
1

我開發了一個自定義Web應用程序(WAR),需要從請求對象中檢索SAML響應並從中提取用戶配置文件屬性。部署在同一個在WebSphere(服務提供商)如何在TAI和ACS在SSO期間處理它之後訪問SAML響應

試圖執行下面的方法,其特徵在於:: - OneLogin(身份提供者)發送SAML響應和中繼狀態 - 該SAML響應由ACS應用 處理 - 的ACS應用程序將用戶重定向到自定義Web應用程序(在IdP的RelayState中設置) - 此應用程序將從請求中檢索SAML響應對象,使用用戶配置文件屬性填充動態緩存並將用戶重定向到主應用程序主頁。

當ACS重定向到自定義Web應用程序(在繼電器狀態中設置)時,SAML響應(曾經由WebSphere TAI和ACS應用程序接收和處理)似乎不可用。是否有可能將ACS應用程序的SAML響應保留並傳遞到自定義Web應用程序?

任何幫助/指針,將不勝感激。

親切問候, Ekansh

回答

1

在應用程序中無法獲得原始的SamlResponse消息。但是,可以從應用程序獲取SAML令牌(SAML XML文件)。通常,可以使用此SAML令牌通過SOAP安全頭或Http頭進行Web服務調用,或者使WS-Trust調用交換SAML令牌以獲取新的SAML令牌以進行下游服務調用。 您可以使Web服務調用(JAX-WS或JAX-RS)而不是瀏覽器重定向嗎?如果Web服務調用適合您,我可以幫助您使其工作。

+0

謝謝。如果用戶存在兩端(IdP和SP),我可以從SAML令牌提取SAML屬性。但是當用戶確實存在於SP端並且需要創建時,情況如何呢?在這種情況下,即使ACS未授權訪問,SAML令牌仍會存在。因爲用戶特定的信息(例如:用戶名,電子郵件等)出現在SAML令牌中,所以我需要同樣爲這種情況創建一個新用戶 –

+0

WebSphere SAML SP有兩個配置選項。缺省情況下,用戶不必在SP中存在,並使用受信任的SAML令牌創建主題。另一種選擇是用戶必須在SP中。如果用戶需要在SP中,並且用戶不在SP中,我們在創建主題前爲您提供SPI創建用戶帳戶。要創建用戶帳戶,請實現com.ibm.wsspi.security.web.saml.NameIDMapping接口。在實施過程中,您可以根據需要從SAML令牌創建用戶輸入。在TAI配置中,您可以通過添加sso_1.sp.userMapImpl =來使用屬性來配置此SPI。 – Chunlong

+0

謝謝春龍。但我對此有疑問。目前我正在使用WAS 8.0.0.4。你提到的「DEFAULT CONFIGURATION OPTION」是「sso_ .sp.idMap」嗎? –

0

保持並越過SAML響應是沒有意義的。本質上,根據定義的協議,一旦用戶是Authenticated @ OneLogin,它將SAML響應中的SAML令牌發送回ACS。 ACS驗證SAML令牌並允許用戶進一步處理。

現在,如果您將用戶重定向到自定義Web應用程序並希望使用SAML,那麼您應該在應用程序中理想地實現SAML服務提供程序庫,並且您的自定義Web應用程序將充當另一個SAML客戶端, OneLogin。在這種情況下,在這種情況下,身份提供商打開SSO時,此情況下的用戶將獲得SSO身份驗證,因爲他在登錄ACS時已經身份驗證。

+0

謝謝。如果用戶存在兩端(IdP和SP),我可以從SAML令牌提取SAML屬性。但是當用戶確實存在於SP端並且需要創建時,情況如何呢?在這種情況下,即使ACS未授權訪問,SAML令牌仍會存在。由於用戶特定的信息(例如:用戶名,電子郵件等)出現在SAML令牌中,因此我需要相同的方式爲這種情況創建新的用戶 –

+0

我想你的意思是說用戶不會存在於SP處,但出現在IdP處,在這種情況下,您的IdP將驗證用戶身份,並向ACS提供有效的SAML令牌,現在由ACS決定是否需要在Fly上創建用戶或詢問他以聯繫管理員或向他展示失敗。 SAML在這方面沒有任何作用。如果您認爲我以前的輸入以某種方式爲您提供了幫助,請不要忘記將其標記爲答案。 –

+0

感謝Soumen。默認的Websphere ACS應用程序似乎將用戶標記爲未經授權。因此,在我的應用程序中,當我嘗試獲取主題時,然後依次從主題(privateCredentials)獲取SAML令牌的Set []。它返回一個空數組[]。在這種情況下,我有什麼辦法讓默認ACS仍然發​​送SAML令牌。 –

相關問題