RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A 구조체(rpcdce.h)
RPC_HTTP_TRANSPORT_CREDENTIALS_V2 구조는 RPC/HTTP를 사용할 때 RPC 프록시 서버 또는 HTTP 프록시 서버에 인증하는 추가 자격 증명을 정의합니다.
RPC_HTTP_TRANSPORT_CREDENTIALS_V2 HTTP 프록시 서버에 대한 인증을 허용하여 RPC_HTTP_TRANSPORT_CREDENTIALS 확장합니다.
구문
typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A {
SEC_WINNT_AUTH_IDENTITY_A *TransportCredentials;
unsigned long Flags;
unsigned long AuthenticationTarget;
unsigned long NumberOfAuthnSchemes;
unsigned long *AuthnSchemes;
unsigned char *ServerCertificateSubject;
SEC_WINNT_AUTH_IDENTITY_A *ProxyCredentials;
unsigned long NumberOfProxyAuthnSchemes;
unsigned long *ProxyAuthnSchemes;
} RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A, *PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_A;
멤버
TransportCredentials
사용자의 사용자 이름, 도메인 및 암호를 포함하는 SEC_WINNT_AUTH_IDENTITY 구조체에 대한 포인터입니다.
Flags
비트 OR 연산자와 결합할 수 있는 플래그 집합입니다.
AuthenticationTarget
인증 대상을 지정합니다.
다음 값 중 하나 또는 둘 다로 설정해야 합니다.
값 | 의미 |
---|---|
|
HTTP 관점에서 HTTP 서버인 RPC 프록시에 대해 인증합니다. 가장 일반적인 값입니다. |
|
HTTP 프록시에 대해 인증합니다. 이 값은 일반적이지 않습니다. |
NumberOfAuthnSchemes
AuthnScheme 배열의 요소 수입니다.
AuthnSchemes
클라이언트에서 사용하려는 인증 체계 배열에 대한 포인터입니다. 배열의 각 요소는 다음 상수 중 하나를 포함할 수 있습니다.
RPC_C_HTTP_AUTHN_SCHEME_BASIC
RPC_C_HTTP_AUTHN_SCHEME_NTLM
RPC_C_HTTP_AUTHN_SCHEME_PASSPORT
RPC_C_HTTP_AUTHN_SCHEME_DIGEST
RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE
RPC_C_HTTP_AUTHN_SCHEME_PASSPORT, RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE 및 RPC_C_HTTP_AUTHN_SCHEME_DIGEST 상수로 정의되지만 현재 지원되지는 않습니다. 호출자는 이를 지정해서는 안 됩니다. 이렇게 하면 RPC_S_CANNOT_SUPPORT 오류가 발생합니다. 각 상수를 한 번 지정할 수 있습니다. RPC는 성능상의 이유로 이 제한을 확인하지 않지만 상수를 두 번 이상 지정하면 정의되지 않은 결과가 생성됩니다.
실제 인증 체계를 선택하는 알고리즘은 다음과 같습니다.
RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME 지정하면 첫 번째 인증 체계가 선택됩니다. 서버에서 지원하지 않는 경우 연결 설정이 실패합니다. RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME 지정하지 않으면 RPC 클라이언트는 먼저 RPC 프록시에 대한 익명 연결을 시도합니다. IIS가 인증 챌린지를 반환하는 경우 RPC 클라이언트는 AuthnScheme 배열에도 있는 경우 서버에서 선호하는 인증 체계를 선택합니다. 서버에서 선호하는 체계가 AuthnScheme 배열에 없는 경우 AuthnScheme 배열은 처음부터 끝까지 트래버스되고 서버에서도 지원되는 체계가 발견되면 해당 인증 체계가 사용됩니다.
ServerCertificateSubject
서버 보안 주체 이름이 필요한 선택적 문자열을 포함합니다. 보안 주체 이름은 RpcCertGeneratePrincipalName 에 대해 생성된 것과 동일한 형식입니다(자세한 내용은 보안 주체 이름 참조). 이 멤버는 SSL을 사용하는 경우에만 사용됩니다. 이러한 경우 서버 인증서가 생성된 보안 주체 이름에 대해 검사됩니다. 일치하지 않으면 오류가 반환됩니다. 이 멤버를 사용하면 클라이언트가 RPC 프록시를 인증할 수 있습니다.
ProxyCredentials
HTTP 프록시 서버에 대해 인증할 때 사용자의 사용자 이름, 도메인 및 암호를 포함하는 SEC_WINNT_AUTH_IDENTITY 구조체에 대한 포인터입니다. ProxyCredentials 는 AuthenticationTarget 에 RPC_C_HTTP_AUTHN_TARGET_PROXY 포함된 경우에만 유효합니다.
NumberOfProxyAuthnSchemes
HTTP 프록시 서버에 대해 인증할 때 ProxyAuthnSchemes 배열의 요소 수입니다. NumberOfProxyAuthnSchemes 는 AuthenticationTarget 에 RPC_C_HTTP_AUTHN_TARGET_PROXY 포함하는 경우에만 유효합니다.
ProxyAuthnSchemes
클라이언트가 HTTP 프록시 서버에 대해 인증할 때 사용할 인증 체계 배열에 대한 포인터입니다. 배열의 각 요소는 다음 상수 중 하나를 포함할 수 있습니다. ProxyAuthnSchemes 는 AuthenticationTarget 에 RPC_C_HTTP_AUTHN_TARGET_PROXY 포함된 경우에만 유효합니다.
RPC_C_HTTP_AUTHN_SCHEME_BASIC
RPC_C_HTTP_AUTHN_SCHEME_NTLM
RPC_C_HTTP_AUTHN_SCHEME_PASSPORT
RPC_C_HTTP_AUTHN_SCHEME_DIGEST
RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE
설명
TransportCredentials 멤버가 NULL이고 인증 체계가 NTLM인 경우 현재 로그온한 사용자의 자격 증명이 사용됩니다. 약한 LM 해시를 통해 네트워크에서 사용자 자격 증명을 노출하지 않도록 하려면 다음 조건 중 하나 또는 둘 다에 해당하는 경우에만 사용자 로그온 자격 증명이 사용됩니다.
- 호출자는 SSL 사용을 요청하고 ServerCertificateSubject 멤버를 사용했습니다. 이 시나리오는 약한 해시가 사용되는 경우에도 전송 중 및 최종 대상에서 자격 증명이 보호되도록 보장합니다.
- lncompatibilitylevel 키가 2 이상으로 설정됩니다. 이로 인해 NTLM 보안 공급자는 약한 LM 해시가 아닌 강력한 NT 해시만 내보내거나 응답합니다. 또한 고객은 NTLMv2를 시도하는 수준 3 이상을 사용하는 것이 좋습니다.
요구 사항
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱만 해당] |
머리글 | rpcdce.h(Rpc.h 포함) |
추가 정보
RPC_HTTP_TRANSPORT_CREDENTIALS