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

How to access SAML Response after TAI and ACS have processed it during SSO

我开发了一个自定义 Web 应用程序 (WAR),它需要从请求对象中检索 SAML 响应并从中提取用户配置文件属性。在 WebSphere(服务提供商)上部署了相同的内容

尝试实施以下方法,其中:: - OneLogin(身份提供者)发送 SAML 响应和中继状态 - SAML 响应由 ACS 应用程序处理 - ACS 应用程序将用户重定向到自定义 Web 应用程序(在 IdP 的 RelayState 中设置) - 此应用程序然后将从请求中检索 SAML 响应对象,使用用户配置文件属性填充动态缓存并将用户重定向到主应用程序主页。

目前,当 ACS 重定向到自定义 Web 应用程序(在中继状态中设置)时,SAML 响应(一旦被 WebSphere TAI 和 ACS 应用程序接收和处理)似乎不可用。是否可以保留来自 ACS 应用程序的 SAML 响应并将其传递到自定义 Web 应用程序?

任何 help/pointers 将不胜感激。

热烈的问候, Ekansh

保留并传递 SAML 响应没有意义。本质上,正如协议定义的那样,一旦用户通过@OneLogin 的身份验证,它就会在 SAML 响应中将 SAML 令牌发送回 ACS。 ACS 验证 SAML 令牌并允许用户继续下一步。

现在,如果您将用户重定向到自定义 Web 应用程序并希望使用 SAML,那么理想情况下,您应该在您的应用程序中实现 SAML 服务提供商库,并且您的自定义 Web 应用程序将充当另一个 SAML 客户端,已注册在 OneLogin 中。在这种情况下,如果在身份提供者处打开 SSO,在这种情况下,用户将获得类似 SSO 的体验 OneLogin ,因为他在登录 ACS 时已经进行了身份验证 himself/herself 。

无法在您的应用程序中获取原始 SamlResponse 消息。但是,可以从应用程序获取 SAML 令牌(SAML XML 文件)。通常,可以使用此 SAML 令牌通过 SOAP 安全性 header 或 Http header 进行 Web 服务调用,或者进行 WS-Trust 调用以将 SAML 令牌交换为用于下游服务的新 SAML 令牌称呼。 您可以进行 Web 服务调用(JAX-WS 或 JAX-RS)而不是浏览器重定向吗?如果网络服务调用适合您,我可以帮助您使其正常工作。