RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A-Struktur (rpcdce.h)

Die RPC_HTTP_TRANSPORT_CREDENTIALS_V3-Struktur definiert zusätzliche Anmeldeinformationen für die Authentifizierung bei einem RPC-Proxyserver oder HTTP-Proxyserver, wenn RPC/HTTP verwendet wird.

RPC_HTTP_TRANSPORT_CREDENTIALS_V3 erweitert RPC_HTTP_TRANSPORT_CREDENTIALS_V2 , indem beliebige Anmeldeinformationsformulare verwendet werden können.

Syntax

typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A {
  RPC_AUTH_IDENTITY_HANDLE TransportCredentials;
  unsigned long            Flags;
  unsigned long            AuthenticationTarget;
  unsigned long            NumberOfAuthnSchemes;
  unsigned long            *AuthnSchemes;
  unsigned char            *ServerCertificateSubject;
  RPC_AUTH_IDENTITY_HANDLE ProxyCredentials;
  unsigned long            NumberOfProxyAuthnSchemes;
  unsigned long            *ProxyAuthnSchemes;
} RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A, *PRPC_HTTP_TRANSPORT_CREDENTIALS_V3_A;

Members

TransportCredentials

Ein Zeiger auf ein undurchsichtiges Authentifizierungshandle in Form einer RPC_AUTH_IDENTITY_HANDLE-Struktur .

Flags

Eine Gruppe von Flags, die mit dem bitweisen OR-Operator kombiniert werden können.

Wert Bedeutung
RPC_C_HTTP_FLAG_USE_SSL
Weist RPC an, SSL für die Kommunikation mit dem RPC-Proxy zu verwenden.
RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME
Bei Festlegung wählt RPC das erste Schema im AuthnSchemes-Array aus und versucht, sich beim RPC-Proxy zu authentifizieren. Wenn der RPC-Proxy das ausgewählte Authentifizierungsschema nicht unterstützt, schlägt der Aufruf fehl. Wenn er nicht festgelegt ist, fragt der RPC-Client den RPC-Proxy nach unterstützten Authentifizierungsschemas ab und wählt eines aus.

AuthenticationTarget

Gibt das Authentifizierungsziel an.

Sollte auf einen oder beide der folgenden Werte festgelegt werden:

Wert Bedeutung
RPC_C_HTTP_AUTHN_TARGET_SERVER
Authentifizieren Sie sich beim RPC-Proxy, bei dem es sich aus HTTP-Sicht um den HTTP-Server handelt. Dies ist der am häufigsten verwendete Wert.
RPC_C_HTTP_AUTHN_TARGET_PROXY
Authentifizieren Sie sich beim HTTP-Proxy. Dieser Wert ist ungewöhnlich.

NumberOfAuthnSchemes

Die Anzahl der Elemente im AuthnScheme-Array .

AuthnSchemes

Ein Zeiger auf ein Array von Authentifizierungsschemas, das der Client verwenden möchte. Jedes Element des Arrays kann eine der folgenden Konstanten enthalten:

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 werden RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE und RPC_C_HTTP_AUTHN_SCHEME_DIGEST als Konstanten definiert, aber derzeit nicht unterstützt. Anrufer sollten sie nicht angeben. Dies führt zu RPC_S_CANNOT_SUPPORT Fehler. Jede Konstante kann einmal angegeben werden. RPC überprüft diese Einschränkung aus Leistungsgründen nicht, aber die Angabe einer Konstanten mehr als einmal führt zu nicht definierten Ergebnissen.

Der Algorithmus für die Auswahl des tatsächlichen Authentifizierungsschemas lautet wie folgt:

Wenn RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME angegeben ist, wird das erste Authentifizierungsschema ausgewählt. Wenn sie vom Server nicht unterstützt wird, schlägt die Verbindungsherstellung fehl. Wenn RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME nicht angegeben ist, versucht der RPC-Client zunächst eine anonyme Verbindung mit dem RPC-Proxy. Wenn IIS die Authentifizierungsanforderung zurückgibt, wählt der RPC-Client das vom Server bevorzugte Authentifizierungsschema aus, wenn es sich ebenfalls im AuthnScheme-Array befindet. Wenn sich das vom Server bevorzugte Schema nicht im AuthnScheme-Array befindet, wird das AuthnScheme-Array von Anfang bis Ende durchlaufen, und wenn ein Schema gefunden wird, das auch vom Server unterstützt wird, wird dieses Authentifizierungsschema verwendet.

ServerCertificateSubject

Enthält eine optionale Zeichenfolge mit dem erwarteten Serverprinzipalnamen. Der Prinzipalname hat das gleiche Format wie für RpcCertGeneratePrincipalName (weitere Informationen finden Sie unter Prinzipalnamen ). Dieses Element wird nur verwendet, wenn SSL verwendet wird. In solchen Fällen wird das Serverzertifikat anhand des generierten Prinzipalnamens überprüft. Wenn sie nicht übereinstimmen, wird ein Fehler zurückgegeben. Mit diesem Member können Clients den RPC-Proxy authentifizieren.

ProxyCredentials

Ein Zeiger auf ein undurchsichtiges Authentifizierungshandle in Form einer RPC_AUTH_IDENTITY_HANDLE-Struktur bei der Authentifizierung auf einem HTTP-Proxyserver. ProxyCredentials ist nur gültig, wenn AuthenticationTargetRPC_C_HTTP_AUTHN_TARGET_PROXY enthält.

NumberOfProxyAuthnSchemes

Die Anzahl der Elemente im ProxyAuthnSchemes-Array bei der Authentifizierung für einen HTTP-Proxyserver. NumberOfProxyAuthnSchemes ist nur gültig, wenn AuthenticationTargetRPC_C_HTTP_AUTHN_TARGET_PROXY enthält.

ProxyAuthnSchemes

Ein Zeiger auf ein Array von Authentifizierungsschemas, das der Client bei der Authentifizierung auf einem HTTP-Proxyserver verwenden möchte. Jedes Element des Arrays kann eine der folgenden Konstanten enthalten. ProxyAuthnSchemes ist nur gültig, wenn AuthenticationTargetRPC_C_HTTP_AUTHN_TARGET_PROXY enthält.

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

Hinweise

Wenn das TransportCredentials-ElementNULL und das Authentifizierungsschema NTLM ist, werden die Anmeldeinformationen des derzeit angemeldeten Benutzers verwendet. Um die Offenlegung von Benutzeranmeldeinformationen im Netzwerk durch einen schwachen LM-Hash zu vermeiden, werden Benutzeranmeldeinformationen nur verwendet, wenn eine oder beide der folgenden Bedingungen zutrifft:

  • Der Aufrufer hat die Verwendung von SSL angefordert und das Element ServerCertificateSubject verwendet. Dieses Szenario garantiert, dass Anmeldeinformationen sowohl bei der Übertragung als auch am enden Ziel geschützt werden, auch wenn ein schwacher Hash verwendet wird.
  • Der lncompatibilitylevel-Schlüssel ist auf 2 oder höher festgelegt. Dies bewirkt, dass der NTLM-Sicherheitsanbieter nur den starken NT-Hash ausgibt oder darauf reagiert, nicht den schwachen LM-Hash. Darüber hinaus werden Kunden ermutigt, Stufe 3 oder höher zu verwenden, wodurch NTLMv2 versucht wird.
Wenn die Unicode-Version der RpcBindingSetAuthInfoEx-Funktion verwendet wird, müssen auch Unicode-Versionen der RPC_HTTP_TRANSPORT_CREDENTIALS_V3 - und SEC_WINNT_AUTH_IDENTITY-Strukturen angegeben werden, und der Flags-Member in TransportCredentials muss auf SEC_WINNT_AUTH_IDENTITY_UNICODE festgelegt werden. Wenn die ANSI-Version der RpcBindingSetAuthInfoEx-Funktion verwendet wird, müssen ANSI-Versionen von RPC_HTTP_TRANSPORT_CREDENTIALS_V3 - und SEC_WINNT_AUTH_IDENTITY-Strukturen bereitgestellt werden, und das Flags-Element in TransportCredentials muss auf SEC_WINNT_AUTH_IDENTITY_ANSI festgelegt werden.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Kopfzeile rpcdce.h (include Rpc.h)

Weitere Informationen

Prinzipalnamen

RPC_HTTP_TRANSPORT_CREDENTIALS

RPC_HTTP_TRANSPORT_CREDENTIALS_V2

RPC_SECURITY_QOS

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V3

Remoteprozeduraufrufe mit dem RPC-über-HTTP-Proxy

RpcBindingSetAuthInfoEx

RpcCertGeneratePrincipalName

SEC_WINNT_AUTH_IDENTITY