Как получить строку ответа SAML после успешного входа из Spring Security Saml
Я использую весеннее расширение безопасности saml для sso в моем приложении. Я могу успешно интегрироваться с adfs. Теперь мне нужно, чтобы точный кодированный ответ SAML, который мы получаем от adfs, передавался веб-сервисам ниже по потоку. Как получить эту строку ответа SAML?
2 ответа
Если ваш токен SAML зашифрован:
Вы можете расширить SAMLAuthenticationProvider по умолчанию и переопределить метод проверки подлинности. В этом методе вы можете получить полный ответ 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();
См. Главу 9.5 в руководстве, где обсуждается, как сохранить Утверждение в исходном формате, используя releaseDOM
флаг и как его распаковать (так же, как пишет Агам).