如何从请求中获取 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的主要内容,如果未能解决你的问题,请参考以下文章