【问题标题】:how to get SAMLResponse from request如何从请求中获取 SAMLResponse
【发布时间】:2015-05-23 16:18:57
【问题描述】:
任何人都可以帮助我如何捕获 SAMLResponse。我正在使用 Spring SAML。
我在authenticatinSuccesshandler 发送的自定义过滤器中使用了下面的片段。但得到一个空值。
String responseMessage = httpServletRequest.getParameter("SAMLResponse");
请给我建议。
【问题讨论】:
标签:
spring-security
spring-saml
opensaml
【解决方案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 对象内部进行处理。