HTTP_REQUEST_AUTH_INFO 구조체(http.h)

HTTP_REQUEST_AUTH_INFO 구조에는 수신 프로세스가 인증된 클라이언트를 가장하는 데 사용할 수 있는 클라이언트 토큰에 대한 핸들이 있는 요청의 인증 상태 포함됩니다.

이 구조체는 HTTP_REQUEST_INFO 구조체에 포함되어 있습니다.

구문

typedef struct _HTTP_REQUEST_AUTH_INFO {
  HTTP_AUTH_STATUS       AuthStatus;
  SECURITY_STATUS        SecStatus;
  ULONG                  Flags;
  HTTP_REQUEST_AUTH_TYPE AuthType;
  HANDLE                 AccessToken;
  ULONG                  ContextAttributes;
  ULONG                  PackedContextLength;
  ULONG                  PackedContextType;
  PVOID                  PackedContext;
  ULONG                  MutualAuthDataLength;
  PCHAR                  pMutualAuthData;
  USHORT                 PackageNameLength;
  PWSTR                  pPackageName;
} HTTP_REQUEST_AUTH_INFO, *PHTTP_REQUEST_AUTH_INFO;

멤버

AuthStatus

요청의 최종 인증 상태 나타내는 HTTP_AUTH_STATUS 열거형의 멤버입니다.

인증 상태 HttpAuthStatusSuccess가 아닌 경우 애플리케이션은 AuthStatus, SecStatus 및 AuthType을 제외한 이 구조체의 멤버를 무시해야 합니다.

SecStatus

AuthStatus 멤버가 HttpAuthStatusFailure인 경우 보안 실패 상태 나타내는 SECURITY_STATUS 값입니다.

Flags

다음 인증 특성을 나타내는 인증 플래그입니다.

attribute 의미
HTTP_REQUEST_AUTH_FLAG_TOKEN_FOR_CACHED_CRED
제공된 토큰은 NTLM용이며 KA(Keep Alive) 연결의 캐시된 자격 증명을 기반으로 합니다.

AuthType

요청에 대해 시도되거나 설정된 인증 체계를 나타내는 HTTP_REQUEST_AUTH_TYPE 열거형의 멤버입니다.

AccessToken

수신 프로세스가 인증된 클라이언트를 가장하는 데 사용할 수 있는 클라이언트 토큰에 대한 핸들입니다.

더 이상 필요하지 않은 경우 CloseHandle 을 호출하여 토큰에 대한 핸들을 닫아야 합니다. 이 토큰은 요청의 수명 동안만 유효합니다. 애플리케이션은 토큰이 만료되면 초기 401 챌린지를 다시 생성하여 다시 인증할 수 있습니다.

ContextAttributes

액세스 토큰에 대한 클라이언트 컨텍스트 특성입니다.

PackedContextLength

PackedContext의 길이(바이트)입니다.

PackedContextType

PackedContext 멤버의 컨텍스트 유형입니다.

PackedContext

인증 유형에 대한 보안 컨텍스트입니다.

애플리케이션은 SSPI QueryContextAttributes API를 호출하여 압축된 컨텍스트의 특성을 쿼리할 수 있습니다. 그러나 애플리케이션은 표시된 AuthType에 대한 보안 패키지에 대한 자격 증명 핸들을 획득해야 합니다.

애플리케이션은 SSPI FreeContextBuffer API를 호출하여 더 이상 필요하지 않은 경우 직렬화된 컨텍스트를 해제해야 합니다.

MutualAuthDataLength

pMutualAuthData 멤버의 길이(바이트)입니다.

pMutualAuthData

WWW-Authenticate 헤더에 사용되는 Base64로 인코딩된 상호 인증 데이터입니다.

PackageNameLength

pPackageName

설명

HTTP 버전 2.0부터 HTTP_REQUEST 구조체에는 HTTP_REQUEST_INFO 구조가 포함됩니다. 요청 정보 형식이 HttpRequestInfoTypeAuth경우 HTTP_REQUEST_INFO 구조체의 pVoid 멤버는 HTTP_REQUEST_AUTH_INFO 가리킵니다.

애플리케이션이 이 구조의 요청을 수신하고 요청이 인증되지 않은 경우 HTTP_MULTIPLE_KNOWN_HEADERS 구조에서 원하는 WWW-Authenticate 헤더 집합으로 초기 401 챌린지를 보낼 수 있습니다. HTTP Server API가 인증 핸드셰이크를 완료하면 HTTP_REQUEST_AUTH_INFO 구조를 채우고 요청을 사용하여 애플리케이션에 다시 전달합니다. 클라이언트 ID를 나타내는 액세스 토큰에 대한 핸들은 HTTP Server API를 통해 이 구조에 제공됩니다.

컨텍스트 특성

ContextAttributes 멤버는 SSPI 기반 스키마에 대해 제공됩니다. 예를 들어 SSPI 애플리케이션은 상호 인증된 세션에 대해 ASC_RET_MUTUAL_AUTH 설정되었는지 여부를 확인할 수 있습니다.

HTTP Server API는 PackedContext 멤버의 컨텍스트에 대한 만료 시간을 제공하지 않습니다. 애플리케이션은 NTLM 자격 증명 캐싱을 사용하도록 설정하고 애플리케이션이 캐시된 컨텍스트의 만료 시간을 쿼리하는 경우와 같은 특정 상황에서 만료 시간이 필요할 수 있습니다. 서버 애플리케이션에 액세스 토큰과 연결된 기본 클라이언트 컨텍스트에 대한 만료 시간이 필요한 경우 압축된 컨텍스트를 수신하고 SECPKG_ATTR_LIFESPANQueryContextAttributes를 호출할 수 있습니다.

상호 인증 데이터

기본적으로 HTTP Server API는 상호 인증 데이터가 최종 200 응답에 추가되도록 합니다. 일반적으로 서버 애플리케이션은 상호 인증 데이터를 전송할 책임이 없습니다.

그러나 애플리케이션은 상호 인증 데이터를 수신하고 최종 응답과 함께 보낼 수 있습니다. HTTP_SERVER_AUTHENTICATION_INFO 구조의 ReceiveMutualAuth 멤버가 true로 설정되면 애플리케이션은 인증된 요청과 함께 상호 인증을 위한 서버 자격 증명을 받습니다.

pMutualAuthData 멤버에 제공된 상호 인증 데이터에는 헤더 이름이 없는 WWW-Authenticate 헤더의 정확한 값이 포함됩니다. 예를 들어 pMutualAuthData 는 "협상 ade02938481eca"를 가리킵니다. 애플리케이션은 제공된 pMutualAuthData 를 응답 헤더 값으로 추가하여 WWW-Authenticate 헤더를 빌드합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
머리글 http.h

추가 정보

HTTP Server API 버전 2.0 구조체

HTTP_REQUEST_INFO

HTTP_REQUEST_V2