2017-12-15 19 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

답장을 보내 주셔서 감사합니다. 어설 션 인터페이스의 메소드를 탐색 할 때 credential.getAuthenticationAssertion(). getParent() 메소드가 SAML 응답을 제공하고 제 경우에는 정상적으로 작동합니다. 그 방법이 잘못 되었습니까? – Ajay

+0

오오 !! 나는 그 사실을 몰랐다. 이미 맞춤 구현 SAMLAuthenticationProvider가 있으므로 해당 접근 방식을 사용하여 질문에 답했습니다. 그러나 코드가 정상적으로 작동하는 것이 확실한 방법입니다. – Agam