RPC_BINDING_HANDLE_SECURITY_V1_A-Struktur (rpcdce.h)
Die RPC_BINDING_HANDLE_SECURITY_V1-Struktur enthält die grundlegenden Sicherheitsoptionen, mit denen ein RPC-Bindungshandle erstellt werden kann.
Syntax
typedef struct _RPC_BINDING_HANDLE_SECURITY_V1_A {
unsigned long Version;
unsigned char *ServerPrincName;
unsigned long AuthnLevel;
unsigned long AuthnSvc;
SEC_WINNT_AUTH_IDENTITY_A *AuthIdentity;
RPC_SECURITY_QOS *SecurityQos;
} RPC_BINDING_HANDLE_SECURITY_V1_A, *PRPC_BINDING_HANDLE_SECURITY_V1_A;
Member
Version
Die Version dieser Struktur. Für RPC_BINDING_HANDLE_SECURITY_V1 muss dies auf 1 festgelegt werden.
ServerPrincName
Zeiger auf eine Zeichenfolge, die den Serverprinzipalnamen enthält, auf den das Bindungshandle verweist. Der Inhalt des Namens und seine Syntax werden vom verwendeten Authentifizierungsdienst definiert.
AuthnLevel
Authentifizierungsebene für Remoteprozeduraufrufe, die mithilfe dieses Bindungshandles ausgeführt werden. Eine Liste der RPC-unterstützten Authentifizierungsstufen finden Sie unter Konstanten auf Authentifizierungsebene.
Wenn AuthnSvc auf RPC_C_AUTHN_NONE festgelegt ist, muss dieser Member ebenfalls auf RPC_C_AUTHN_NONE festgelegt werden.
AuthnSvc
Authentifizierungsdienst, der bei der Bindung verwendet werden soll.
Geben Sie RPC_C_AUTHN_NONE an, um die Authentifizierung für Remoteprozeduraufrufe mit dem Bindungshandle zu deaktivieren.
Wenn RPC_C_AUTHN_DEFAULT angegeben ist, verwendet die RPC-Laufzeitbibliothek den RPC_C_AUTHN_WINNT-Authentifizierungsdienst für Remoteprozeduraufrufe, die mithilfe des Bindungshandles ausgeführt werden.
Wenn AuthnLevel auf RPC_C_AUTHN_NONE festgelegt ist, muss dieser Member ebenfalls auf RPC_C_AUTHN_NONE festgelegt werden.
AuthIdentity
SEC_WINNT_AUTH_IDENTITY Struktur, die die Anmeldeinformationen für Authentifizierung und Autorisierung des Clients enthält, die für den ausgewählten Authentifizierungs- und Autorisierungsdienst geeignet sind.
SecurityQos
RPC_SECURITY_QOS Struktur, die die Sicherheitseinstellungen für die Dienstqualität für das Bindungshandle enthält.
Hinweise
Wenn diese Struktur nicht an RpcBindingCreate übergeben wird, also wenn der Sicherheitsparameter von RpcBindingCreate auf NULL festgelegt ist, werden die folgenden Standardsicherheitsverhalten angenommen:
- Für die Protokollsequenz ncalrpc (lokales RPC) verwendet RPC sicherheit auf Transportebene. Dies bedeutet, dass RPC die vom Windows-Kernel angebotenen Sicherheitsmechanismen verwendet, um Sicherheit zu bieten, und RPC den Server nicht authentifiziert, da er eine Verbindung mit der aktuellen Threadidentität herstellt. In diesem Fall ist die Identitätsnachverfolgung statisch, der Identitätswechseltyp auf "Identitätswechsel" und die Authentifizierungsebene auf "Datenschutz" festgelegt.
- Für die Protokollsequenz ncacn_np verwendet RPC auch Sicherheit auf Transportebene. Wenn der Aufruf remote ist, verwendet RPC die Sicherheitsmechanismen, die von der Windows-Dateisystemumleitung bereitgestellt werden, und es gibt keine gegenseitige Authentifizierung. In diesem Fall ist die Identität die aktuelle Threadidentität, der Status der Identitätsnachverfolgung ist statisch, der Identitätswechseltyp auf "Identitätswechsel" festgelegt, und die Authentifizierungsebene wird durch die Richtlinien des Remotecomputers bestimmt.
Wenn der Aufruf lokal ist, verwendet RPC die vom Named Pipe File System (NPFS) bereitgestellten Sicherheitsmechanismen, und es gibt auch keine gegenseitige Authentifizierung. In diesem Fall ist die Identität die aktuelle Threadidentität oder eine beliebige Identität, die über den Befehl "net use" für den Server eingerichtet wurde. Der Identitätsnachverfolgungsstatus ist dynamisch, der Identitätswechseltyp auf "Identitätswechsel" und die Authentifizierungsebene auf "Datenschutz" festgelegt.
- Für die Protokollsequenzen ncacn_ip_tcp, ncacn_ip_udp und ncacn_http wird keine Sicherheit verwendet, wenn Sicherheit auf NULL festgelegt ist. Der Server führt keinen Identitätswechsel aus, und alle Daten werden als Klartext gesendet. Um maximalen Schutz für Daten zu bieten, muss die Anwendung immer Sicherheitsdaten bereitstellen.
In der folgenden Tabelle sind die Standardsicherheitseinstellungen für die verschiedenen Protokollsequenzen zusammengefasst, wenn der Security-Parameter von RpcBindingCreate auf NULL festgelegt ist.
Standardsicherheitseinstellungen | ncalrpc | lokale ncacn_np | Remote-ncacn_np | ncacn_ip_tcp, ncacn_ip_udp und ncacn_http |
---|---|---|---|---|
Sicherheitsmechanismus | Windows-Kernel | NPFS | Dateisystemumleitung | Keine |
Authentifizierungsebene | Datenschutz | Datenschutz | Serverrichtlinie abhängig | Keine |
Gegenseitige Authentifizierung? | No | No | No | No |
Identitätswechseltyp | Impersonate | Impersonate | Impersonate | – |
Identitätsnachverfolgungstyp | statischen | Dynamisch | statischen | – |
Nur effektiv? | Ja | Nein | – | – |
Anrufidentität | Aktueller Thread | Aktueller Thread | Aktuelle Thread- oder Net Use-Einstellungen | – |
Wenn Sie ein Schnellbindungshandle erstellen, indem Sie die RpcBindingCreate-API aufrufen, ist die Standardidentitätsnachverfolgung für ncalrpc ohne bestimmte Sicherheitseinstellungen statisch.
Sie sollten sich der Unterschiede in diesen beiden APIs bewusst sein, wenn Sie zwischen ihnen in Ihrer Anwendung wechseln.
Nachdem das Bindungshandle erstellt wurde, können die APIs RpcBindingSetAuthInfo und RpcBindingSetAuthInfoEx verwendet werden, um die Einstellungen des Bindungshandles mit dieser Struktur zu ändern.
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 (include Rpc.h) |