如何在TAI和ACS在SSO期间处理它之后访问SAML响应

问题描述:

我开发了一个自定义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

在应用程序中无法获得原始的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”吗? –

保持并越过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令牌。 –