如何从请求中获取 SAMLResponse

Posted

技术标签:

【中文标题】如何从请求中获取 SAMLResponse【英文标题】:how to get SAMLResponse from request 【发布时间】:2015-05-23 16:18:57 【问题描述】:

任何人都可以帮助我如何捕获 SAMLResponse。我正在使用 Spring SAML。

我在authenticatinSuccesshandler 发送的自定义过滤器中使用了下面的片段。但得到一个空值。 String responseMessage = httpServletRequest.getParameter("SAMLResponse");

请给我建议。

【问题讨论】:

【参考方案1】:

典型的用例是访问 SAML 断言,这可以按照in this response 的描述来实现。断言也可以在 Authentication 对象中使用,您可以使用以下代码加载它,例如从您的身份验证成功处理程序中:

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
SAMLCredential credential = (SAMLCredential) authentication.getCredentials();
String assertion = XMLHelper.nodeToString(SAMLUtil.marshallMessage(credential.getAuthenticationAssertion();

断言存储为一个未编组的 java 对象,它不会保留所有接收到的细节。如果您需要保持与收到的值完全相同的格式(包括空格,...),请确保在 WebSSOProfileConsumerImpl bean 上将 releaseDOM 设置为 false

您可以访问 SAML Response 对象,例如通过覆盖 bean WebSSOProfileConsumerImpl 中的类,它在 SAMLMessageContext 对象内部进行处理。

【讨论】:

以上是关于如何从请求中获取 SAMLResponse的主要内容,如果未能解决你的问题,请参考以下文章

Angular:如何从 httpClient 请求中获取参数并用于循环相同的请求

如何从请求中获取 SAMLResponse

如何从 HTTP 请求中获取 MAC 地址?

如何从 WinHttp 请求中获取 HTTP 状态码?

如何从 guzzle 请求中获取和显示图像

如何从 Axios 请求中获取价值?