AD FS 문제 해결 - Fiddler - WS-Federation
1단계 및 2단계
이것은 우리의 추적의 시작입니다. 이 프레임에는 다음이 표시됩니다.
요청:
- 신뢰 당사자에 대한 HTTP GET(https://sql1.contoso.com/SampApp)
응답:
- 응답은 HTTP 302(리디렉션)입니다. 응답 헤더의 전송 데이터는 (https://sts.contoso.com/adfs/ls)로 리디렉션할 위치를 보여 줍니다.
- 리디렉션 URL에는 wa=wsignin 1.0이 포함되어 있으며, 이는 RP 애플리케이션이 WS-Federation 로그인 요청을 빌드하고 이를 AD FS의 /adfs/ls/ 엔드포인트로 전송했음을 알려줍니다. 이를 리디렉션 바인딩이라고합니다.
3단계 및 4단계
요청:
- AD FS 서버에 대한 HTTP GET(sts.contoso.com)
응답:
- 응답은 자격 증명에 대한 프롬프트입니다. 이는 양식 인증을 사용하고 있음을 나타냅니다.
- 응답의 WebView를 클릭하면 자격 증명 프롬프트를 볼 수 있습니다.
5단계 및 6단계
요청:
- 사용자 이름 및 암호가 있는 HTTP POST입니다.
- 자격 증명을 제공합니다. 요청에서 원시 데이터를 보면 자격 증명을 볼 수 있습니다.
응답:
- 응답이 발견되고 MSIAuth 암호화 쿠키가 만들어지고 반환됩니다. 클라이언트에서 생성한 SAML 어설션의 유효성을 검사하는 데 사용됩니다. 이를 "인증 쿠키"라고도 하며 AD FS가 Idp인 경우에만 존재합니다.
7단계 및 8단계
요청:
- 인증했으므로 AD FS 서버에 대한 또 다른 HTTP GET을 수행하고 인증 토큰을 제공합니다.
응답:
- 응답은 HTTP OK입니다. 이는 AD FS가 제공된 자격 증명에 따라 사용자를 인증했음을 의미합니다.
- 또한 3개의 쿠키를 클라이언트로 다시 설정합니다.
- MSISAuthenticated에는 클라이언트가 인증되었을 때의 base64로 인코딩된 타임스탬프 값이 포함되어 있습니다.
- MSISLoopDetectionCookie는 AD FS 무한 루프 검색 메커니즘에서 페더레이션 서버로의 무한 리디렉션 루프를 종료한 클라이언트를 중지하는 데 사용됩니다. 쿠키 데이터는 base64로 인코딩된 타임스탬프입니다.
- MSISSignout은 IdP 및 SSO 세션을 위해 방문한 모든 RP를 추적하는 데 사용됩니다. 이 쿠키는 WS-Federation 로그아웃이 호출될 때 활용됩니다. base64 디코더를 사용하여 이 쿠키의 내용을 볼 수 있습니다.
9단계 및 10단계
요청:
- HTTP POST
응답:
- 응답이 발견되었습니다.
11단계 및 12단계
요청:
- HTTP GET
응답:
- 응답이 정상입니다.