如何从请求中获取SAMLResponse

时间:2015-03-20 09:37:02

标签: spring-security spring-saml opensaml

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

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

请告诉我。

1 个答案:

答案 0 :(得分:3)

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

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

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

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