Как получить строку ответа 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 флаг и как его распаковать (так же, как пишет Агам).

Другие вопросы по тегам