如何从spring security saml成功登录后获取SAML响应字符串

时间:2018-02-07 05:25:52

标签: spring spring-security saml spring-saml

我在我的应用程序中为sso使用spring security saml扩展。我能够成功地与adfs集成。现在我需要从adfs获得的确切编码的SAML响应,以传递给下游的webservices。如何获取SAML响应字符串?

2 个答案:

答案 0 :(得分:2)

如果您的SAML令牌已加密:

您可以扩展默认 SAMLAuthenticationProvider 并覆盖authenticate方法。在此方法中,您可以按如下方式获得完整的SAML响应:

SAMLAuthenticationToken token = (SAMLAuthenticationToken) authentication;
SAMLMessageContext context = token.getCredentials();
 try {

            String assertion = XMLHelper.nodeToString(SAMLUtil.marshallMessage(context.getInboundMessage()));
            System.out.println(assertion);
        } catch (MessageEncodingException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

如果您的SAML令牌未加密,则可以使用:

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
SAMLCredential credential = (SAMLCredential) authentication.getCredentials();
Assertion assertion = credential.getAuthenticationAssertion().getParent();

答案 1 :(得分:1)

参见manual中的第9.5章,它讨论了如何使用releaseDOM标志将Assertion保持为原始格式以及如何提取它(与Agam写入的方式相同)。

相关问题