Quality of Service (RPC)

Clientprogramme können die Funktion RpcBindingSetAuthInfoEx anstelle der Funktion RpcBindingSetAuthInfo verwenden, um eine authentifizierte Bindung zu erstellen. Wenn sie dies tun, übergeben sie einen Zeiger auf eine RPC_SECURITY_QOS-Struktur als endgültigen Parameter von RpcBindingSetAuthInfoEx. Diese Struktur enthält Informationen zur Dienstqualität. Clientprogramme können auch die Identitätsnachverfolgung angeben und den Identitätswechseltyp auswählen.

Verwenden Sie den Capabilities-Member der RPC_SECURITY_QOS-Struktur , um festzulegen, welche Teile der Client-/Serveranwendung authentifiziert werden. Wenn RPC_C_QOS_CAPABILITIES_DEFAULT ausgewählt ist, authentifiziert die RPC-Laufzeitbibliothek den Client oder Server gemäß der Standardeinstellung für den SSP. Standardmäßig authentifiziert der Kerberos-Protokoll-SSP sowohl den Client als auch den Server. Die Standardeinstellung für alle anderen SSPs, die Microsoft bereitstellt, besteht darin, den Client beim Server zu authentifizieren, aber nicht, den Server beim Client zu authentifizieren.

Wenn sich Client und Server immer beieinander authentifizieren sollen, legen Sie den Capabilities-Member der RPC_SECURITY_QOS-Struktur auf RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH fest. Einige Sicherheitsanbieter unterstützen möglicherweise keine gegenseitige Authentifizierung. Wenn für solche Sicherheitsanbieter RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH angegeben ist, wird bei einem Remoteprozeduraufruf ein Fehler zurückgegeben. Bei Verwendung des SCHANNEL-SSP ist es auch möglich, den Capabilities-Member auf RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY festzulegen. Diese Konstante gibt an, dass der SSP den Remoteprozeduraufruf auch dann überprüfen soll, wenn sich die Zertifizierungsstelle, die das Authentifizierungszertifikat des Clients ausgestellt hat, nicht im Stammzertifikatspeicher des SSP befindet. Standardmäßig wird das Zertifikat abgelehnt, wenn der SSP die Zertifizierungsstelle nicht erkennt. Die Zertifizierungsstelle ist ein unabhängiges Unternehmen oder ein organization, z. B. VeriSign, das Authentifizierungszertifikate ausstellt.

Anwendungen können auch die Identitätsnachverfolgung festlegen, die von der RPC-Laufzeitbibliothek verwendet wird. Programme verwenden in der Regel statische Identitätsnachverfolgung. Bei der statischen Nachverfolgung werden die Anmeldeinformationen des Clients festgelegt, wenn die RpcBindingSetAuthInfo-Funktion aufgerufen wird. Die RPC-Laufzeitbibliothek verwendet diese Anmeldeinformationen dann für alle RPC-Aufrufe für die Bindung, unabhängig von Änderungen an der Identität des aufrufenden Threads oder des aufrufenden Prozesses. Anwendungen können auch dynamische Identitätsnachverfolgung auswählen. Die dynamische Identitätsnachverfolgung weist die RPC-Laufzeitbibliothek an, die Anmeldeinformationen des aufrufenden Threads zum Zeitpunkt jedes Aufrufs anstelle des Bindungshandles zu verwenden. Die Standardmäßige Identitätsnachverfolgung ist statisch.

Wenn sich die Identität des Clients nicht ändert, kann die statische Identitätsnachverfolgung bessere Leistungsmerkmale aufweisen und die RPC-Laufzeit dadurch sparen, dass jedes Mal überprüft wird, ob die Identität im aufrufenden Thread mit der Identität identisch ist, die dem Sicherheitssystem zugewiesen wurde. Wenn sich die Identität des aufrufenden Threads zwischen Aufrufen ändern kann und der Server diese Änderungen erkennen muss, empfiehlt es sich, die dynamische Identitätsnachverfolgung anzugeben. Die RPC-Laufzeit verfolgt die Identität für Sie leise und effizient, und wenn sich die Identität ändert, verwaltet diese Änderung in Ihrem Namen.

Hinweis

Bei ncalrpc-Aufrufen weisen statische und dynamische Identitätsnachverfolgung unterschiedliche Leistungsmerkmale auf, und abhängig von den Umständen kann beides schneller sein.

 

Im Rahmen der QOS-Spezifikation kann das Clientprogramm auch den Typ des Identitätswechsels festlegen, den ein Serverprogramm in seinem Namen ausführen kann. Weitere Informationen finden Sie unter Clientidentitätswechsel.

Das Versionsnummernfeld der RPC_SECURITY_QOS-Struktur sollte immer auf RPC_C_SECURITY_QOS_VERSION festgelegt werden.