다음을 통해 공유


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 연산자와 결합할 수 있는 플래그 집합입니다.

의미
RPC_C_HTTP_FLAG_USE_SSL
RPC에 SSL을 사용하여 RPC 프록시와 통신하도록 지시합니다.
RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME
설정되면 RPC는 AuthnSchemes 배열에서 첫 번째 체계를 선택하고 RPC 프록시에 대한 인증을 시도합니다. RPC 프록시가 선택한 인증 체계를 지원하지 않으면 호출이 실패합니다. 설정되지 않은 경우 RPC 클라이언트는 지원되는 인증 체계에 대해 RPC 프록시를 쿼리하고 하나를 선택합니다.

AuthenticationTarget

인증 대상을 지정합니다.

다음 값 중 하나 또는 둘 다로 설정해야 합니다.

의미
RPC_C_HTTP_AUTHN_TARGET_SERVER
HTTP 관점에서 HTTP 서버인 RPC 프록시에 대해 인증합니다. 가장 일반적인 값입니다.
RPC_C_HTTP_AUTHN_TARGET_PROXY
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 구조체에 대한 포인터입니다. ProxyCredentialsAuthenticationTargetRPC_C_HTTP_AUTHN_TARGET_PROXY 포함된 경우에만 유효합니다.

NumberOfProxyAuthnSchemes

HTTP 프록시 서버에 대해 인증할 때 ProxyAuthnSchemes 배열의 요소 수입니다. NumberOfProxyAuthnSchemesAuthenticationTargetRPC_C_HTTP_AUTHN_TARGET_PROXY 포함하는 경우에만 유효합니다.

ProxyAuthnSchemes

클라이언트가 HTTP 프록시 서버에 대해 인증할 때 사용할 인증 체계 배열에 대한 포인터입니다. 배열의 각 요소는 다음 상수 중 하나를 포함할 수 있습니다. ProxyAuthnSchemesAuthenticationTargetRPC_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 이상을 사용하는 것이 좋습니다.
RpcBindingSetAuthInfoEx 함수의 유니코드 버전을 사용하는 경우 RPC_HTTP_TRANSPORT_CREDENTIALS_V2SEC_WINNT_AUTH_IDENTITY 구조체의 유니코드 버전도 제공해야 하며 TransportCredentialsFlags 멤버도 SEC_WINNT_AUTH_IDENTITY_UNICODE 설정해야 합니다. RpcBindingSetAuthInfoEx 함수의 ANSI 버전을 사용하는 경우 ANSI 버전의 RPC_HTTP_TRANSPORT_CREDENTIALS_V2SEC_WINNT_AUTH_IDENTITY 구조를 제공해야 하며 TransportCredentialsFlags 멤버를 SEC_WINNT_AUTH_IDENTITY_ANSI 설정해야 합니다.

요구 사항

   
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
머리글 rpcdce.h(Rpc.h 포함)

추가 정보

보안 주체 이름

RPC_HTTP_TRANSPORT_CREDENTIALS

RPC_HTTP_TRANSPORT_CREDENTIALS_V3

RPC_SECURITY_QOS

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V3

RPC over HTTP를 사용한 원격 프로시저 호출

RpcBindingSetAuthInfoEx

RpcCertGeneratePrincipalName

SEC_WINNT_AUTH_IDENTITY