복붙노트

[SPRING] SAMLException : 응답의 InResponseToField가 보낸 메시지와 일치하지 않습니다.

SPRING

SAMLException : 응답의 InResponseToField가 보낸 메시지와 일치하지 않습니다.

우리는 봄 보안 saml로 보호되는 응용 프로그램을 개발 중입니다.

인증은 정상적으로 작동하지만 프로덕션 환경에서는 다음 워크 플로에 하나의 문제가 있습니다.

이제 애플리케이션에서 다음과 같은 예외가 발생합니다.

org.opensaml.common.SAMLException : 응답의 InResponseToField가 보낸 메시지 arGdsZwJtHzTDjQP1oYqbjNO에 해당하지 않습니다.

이 워크 플로를 처리하여 사용자가 성공적으로 로그인 한 후 응용 프로그램을 사용할 수있는 방법은 무엇입니까? 귀하의 답변에 감사드립니다!

해결법

  1. ==============================

    1.applicate 할 때 AuthnRequest가 생성되면 요청에 응용 프로그램이 유지하는 ID가 있습니다. IdP의 해당 응답에는 InResponseTo 속성이 동일한 ID 값으로 설정되어 있어야 응용 프로그램이 응답이 보낸 요청에 대한 것임을 확인할 수 있어야합니다.

    applicate 할 때 AuthnRequest가 생성되면 요청에 응용 프로그램이 유지하는 ID가 있습니다. IdP의 해당 응답에는 InResponseTo 속성이 동일한 ID 값으로 설정되어 있어야 응용 프로그램이 응답이 보낸 요청에 대한 것임을 확인할 수 있어야합니다.

    그러나 사용자가 요청 (www.login-server.com/adfs/ls/?SAMLRequest=xxx ...)이 포함 된 adfs 링크를 북마크에 추가하면 응용 프로그램은 해당 요청을 완전히 잊었습니다. 즉, 더 이상 요청 ID를 어딘가에 보관하지 않으며 응답을 확인할 수 없습니다.

    해결책은 사용자에게 www.login-server.com/adfs/ls/?SAMLRequest=xxx ... 링크를 북마크하지 않도록 지시하는 것입니다. 대신 응용 프로그램에서 새 요청을 생성하고 ADFS로 보낼 수있는 링크를 책갈피에 추가해야합니다.

  2. ==============================

    2.우리는 spring saml 설정을 다음과 같이 변경하여 문제를 해결했습니다.

    우리는 spring saml 설정을 다음과 같이 변경하여 문제를 해결했습니다.

  3. from https://stackoverflow.com/questions/45206873/samlexception-inresponsetofield-of-the-response-doesnt-correspond-to-sent-mess by cc-by-sa and MIT license