2017-12-15 1 views
0

Ich möchte die vollständige SAML-Antwort abrufen, um die Signatur der Antwort zu überprüfen.So erhalten Sie die vollständige SAMLResponse nach Abschluss der Authentifizierung von IDP

Ich benutze Feder SAML-Erweiterung und unten Code gibt nur die SAML-Behauptung, aber nicht die komplette SAML-Antwort.

Authentifizierung authentication = SecurityContextHolder.getContext(). GetAuthentication(); SAMLCredential credential = (SAMLCredential) authentication.getCredentials(); Assertion assertion = credential.getAuthenticationAssertion();

Kann mir jemand dabei helfen?

Antwort

0

Sie können den Standard SAMLAuthenticationProvider erweitern und die Authentifizierungsmethode überschreiben. Innerhalb dieser Methode können Sie die vollständige SAML-Antwort wie folgt abrufen:

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

Vielen Dank für die Antwort. Als ich die Methoden der Assertion-Schnittstelle erkundete, fand ich credential.getAuthenticationAssertion(). GetParent() -Methode, die die SAML-Antwort gibt und in meinem Fall funktioniert. Ist das ein falscher Weg? – Ajay

+0

Ohh !! Das war mir nicht bewusst. Ich hatte bereits eine benutzerdefinierte Implementierung SAMLAuthenticationProvider, also ging ich mit diesem Ansatz und antwortete auf Ihre Frage. Aber wenn Ihr Code gut funktioniert, ist es sicherlich der beste Weg. – Agam

Verwandte Themen