2017-12-15 27 views
0

応答の署名を検証するために、完全なSAML応答を取得したいと考えています。IDPから認証が完了した後で完全なSAMLResponseを取得する方法

私は春のSAML拡張を使用しています。下のコードはSAMLアサーションのみを提供していますが、完全なSAMLレスポンスは提供していません。

認証認証= SecurityContextHolder.getContext()。getAuthentication(); SAMLCredential資格情報=(SAMLCredential)authentication.getCredentials(); アサーションassertion = credential.getAuthenticationAssertion();

誰でも私を助けることができますか?

答えて

0

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(); 
     } 
+0

ありがとうございます。 私はAssertionインターフェイスのメソッドを調べていたときに、私のケースではSAMLの応答を与え、うまく動作するcredential.getAuthenticationAssertion()。getParent()メソッドが見つかりました。 これは間違っていますか? – Ajay

+0

ああ!私はそれを知らなかった。私はすでにカスタム実装のSAMLAuthenticationProviderを持っていたので、私はそのアプローチに行き、あなたの質問に答えました。しかし、コードがうまくいけば、それは確かに最善の方法です。 – Agam

関連する問題