RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W-Struktur (rpcdce.h)

Die RPC_HTTP_TRANSPORT_CREDENTIALS_V2-Struktur definiert zusätzliche Anmeldeinformationen für die Authentifizierung bei einem RPC-Proxyserver oder HTTP-Proxyserver bei Verwendung von RPC/HTTP.

RPC_HTTP_TRANSPORT_CREDENTIALS_V2 erweitert RPC_HTTP_TRANSPORT_CREDENTIALS , indem die Authentifizierung bei einem HTTP-Proxyserver zugelassen wird.

Syntax

typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W {
  SEC_WINNT_AUTH_IDENTITY_W *TransportCredentials;
  unsigned long             Flags;
  unsigned long             AuthenticationTarget;
  unsigned long             NumberOfAuthnSchemes;
  unsigned long             *AuthnSchemes;
  unsigned short            *ServerCertificateSubject;
  SEC_WINNT_AUTH_IDENTITY_W *ProxyCredentials;
  unsigned long             NumberOfProxyAuthnSchemes;
  unsigned long             *ProxyAuthnSchemes;
} RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W, *PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_W;

Member

TransportCredentials

Ein Zeiger auf eine SEC_WINNT_AUTH_IDENTITY Struktur, die den Benutzernamen, die Domäne und das Kennwort für den Benutzer enthält.

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 häufigste 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. Aufrufer 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 wenn Sie mehr als einmal eine Konstante angeben, werden nicht definierte Ergebnisse erzeugt.

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 dies 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 eine 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 ). Dieser Member 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 eine SEC_WINNT_AUTH_IDENTITY Struktur, die den Benutzernamen, die Domäne und das Kennwort für den Benutzer enthält, wenn er sich bei einem HTTP-Proxyserver authentifiziert. 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 bei einem HTTP-Proxyserver. NumberOfProxyAuthnSchemes ist nur gültig, wenn AuthenticationTargetRPC_C_HTTP_AUTHN_TARGET_PROXY enthält.

ProxyAuthnSchemes

Ein Zeiger auf ein Array von Authentifizierungsschemas, die der Client bei der Authentifizierung bei 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 Anmeldeinformationen für Benutzer nur verwendet, wenn eine oder beide der folgenden Bedingungen zutreffen:

  • Der Aufrufer hat die Verwendung von SSL angefordert und das Element ServerCertificateSubject verwendet. In diesem Szenario wird sichergestellt, dass Anmeldeinformationen sowohl während der Übertragung als auch am endgültigen Ziel geschützt werden, selbst 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 auf den schwachen LM-Hash. Darüber hinaus werden Kunden empfohlen, 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_V2 - und SEC_WINNT_AUTH_IDENTITY strukturen bereitgestellt 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_V2 - und SEC_WINNT_AUTH_IDENTITY-Strukturen bereitgestellt werden, und das Flags-Element in TransportCredentials muss auf SEC_WINNT_AUTH_IDENTITY_ANSI festgelegt werden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Kopfzeile rpcdce.h (rpc.h einschließen)

Weitere Informationen

Prinzipalnamen

RPC_HTTP_TRANSPORT_CREDENTIALS

RPC_HTTP_TRANSPORT_CREDENTIALS_V3

RPC_SECURITY_QOS

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V3

Remoteprozeduraufrufe mit dem RPC-über-HTTP-Proxy

RpcBindingSetAuthInfoEx

RpcCertGeneratePrincipalName

SEC_WINNT_AUTH_IDENTITY