다음을 통해 공유


다이제스트 액세스 프로토콜

RFC 2617에서 지정한 다이제스트 액세스 프로토콜은 Microsoft Digest SSP(보안 지원 공급자)에 의해 구현됩니다. 구현은 클라이언트/서버 애플리케이션이 호출하는 Microsoft SSPI( 보안 지원 공급자 인터페이스 ) 보안 컨텍스트 함수 집합으로 구성됩니다.

  • 메시지 교환에 대한 보안 컨텍스트 를 설정합니다.
  • 다이제스트 SSP에 필요한 데이터 개체(예: 자격 증명 및 컨텍스트 핸들)를 가져옵니다.
  • 메시지 무결성 및 기밀성 메커니즘에 액세스합니다.

다이제스트 액세스 인증은 클라이언트에서 시작된 요청과 서버에서 시작된 응답과 함께 쌍을 이루는 요청/응답 트랜잭션 내에서 이루어집니다. 다이제스트 액세스 인증에 성공하려면 두 개의 요청/응답 쌍이 필요합니다.

다이제스트 SSP가 HTTP 인증에 사용되는 경우 첫 번째 및 두 번째 요청/응답 쌍 간에 연결이 유지되지 않습니다. 즉, 서버는 첫 번째 응답을 보낸 후 두 번째 요청을 기다리지 않습니다.

다음 그림에서는 다이제스트 SSP를 사용하여 인증을 완료하기 위해 클라이언트 및 서버가 HTTP 경로에서 수행한 단계를 보여 줍니다. SASL 메커니즘은 상호 인증을 사용하므로 클라이언트가 올바른 서버와 통신하고 있는지 확인하는 클라이언트에 대한 최종 ASC 서버 호출에서 인증 데이터가 다시 전송됩니다.

다이제스트 액세스 프로토콜

이 프로세스는 HTTP 요청 1을 전송하여 서버에서 액세스로 보호되는 리소스를 요청하는 클라이언트로 시작됩니다.

서버는 HTTP 요청 1을 수신하고 리소스에 요청에 포함되지 않은 인증 정보가 필요한지 확인합니다. 서버는 다음과 같이 클라이언트에 대한 챌린지를 생성합니다.

  1. 서버는 AcquireCredentialsHandle 함수를 호출하여 자격 증명을 가져옵니다.
  2. 서버는 AcceptSecurityContext(일반) 함수를 호출하여 다이제스트 챌린지를 생성합니다.
  3. 서버는 클라이언트의 요청에 대한 응답으로 WWW-Authenticate 헤더를 보냅니다(HTTP 응답 1로 표시됨). 헤더에는 다이제스트 챌린지와 클라이언트에 대해 설정된 부분 보안 컨텍스트 에 대한 참조가 포함된 불투명 지시문이 포함되어 있습니다. 헤더는 클라이언트 요청이 무단 액세스 오류를 생성했음을 나타내는 401 상태 코드와 함께 전송됩니다. 다이제스트 챌린지에 대한 자세한 내용은 다이제스트 챌린지의 내용 및 다이제스트 챌린지생성을 참조하세요.
  4. 클라이언트는 HTTP 응답 1을 수신하고, 서버에서 보낸 다이제스트 챌린지를 추출하고, 다음과 같이 다이제스트 챌린지 응답을 생성합니다.
    1. 사용자의 자격 증명은 AcquireCredentialsHandle 함수를 호출하거나 대화형으로 사용자에게 자격 증명을 묻는 메시지를 표시하여 가져옵니다.
    2. 챌린지 및 자격 증명 정보는 다이제스트 챌린지 응답을 생성하는 InitializeSecurityContext(일반) 함수에 전달됩니다.
  5. 클라이언트는 서버에 대한 챌린지 응답이 포함된 권한 부여 헤더를 보냅니다(HTTP 요청 2로 표시됨). 다이제스트 챌린지 응답에 대한 자세한 내용은 다이제스트 챌린지 응답의 내용다이제스트 챌린지 응답 생성을 참조하세요.
  6. 서버는 HTTP 요청 2를 수신하고, 클라이언트에서 보낸 챌린지 응답을 추출하고, AcceptSecurityContext(일반) 함수를 호출하여 정보를 인증합니다. 인증 프로세스에 대한 자세한 내용은 Microsoft Digest를 사용한 초기 인증을 참조하세요.
  7. 서버는 다이제스트 액세스 프로토콜에 필요한 두 번째 및 최종 응답으로 HTTP 응답 2를 클라이언트로 다시 보냅니다. 인증에 성공하면 이 응답에는 요청된 리소스가 포함됩니다.

다이제스트 챌린지 응답의 내용