RPC_SECURITY_QOS-Struktur (rpcdce.h)

Die RPC_SECURITY_QOS-Struktur definiert Sicherheitseinstellungen für die Dienstqualität eines Bindungshandles. Informationen zur Versionsverfügbarkeit in Windows-Editionen finden Sie unter Hinweise.

Syntax

typedef struct _RPC_SECURITY_QOS {
  unsigned long Version;
  unsigned long Capabilities;
  unsigned long IdentityTracking;
  unsigned long ImpersonationType;
} RPC_SECURITY_QOS, *PRPC_SECURITY_QOS;

Member

Version

Version der verwendeten RPC_SECURITY_QOS-Struktur . In diesem Thema wird Version 1 der RPC_SECURITY_QOS-Struktur dokumentiert. Weitere Versionen finden Sie unter RPC_SECURITY_QOS_V2, RPC_SECURITY_QOS_V3, RPC_SECURITY_QOS_V4 und RPC_SECURITY_QOS_V5 .

Capabilities

Sicherheitsdienste, die für die Anwendung bereitgestellt werden. Funktionen sind eine Reihe von Flags, die mit dem bitweisen OR-Operator kombiniert werden können.

Wert Bedeutung
RPC_C_QOS_CAPABILITIES_DEFAULT
Wird verwendet, wenn keine anbieterspezifischen Funktionen erforderlich sind.
RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH
Wenn Sie dieses Flag angeben, wird die RPC-Laufzeit die gegenseitige Authentifizierung vom Sicherheitsanbieter anfordern. Einige Sicherheitsanbieter unterstützen die gegenseitige Authentifizierung nicht. Wenn der Sicherheitsanbieter die gegenseitige Authentifizierung nicht unterstützt oder die Identität des Servers nicht eingerichtet werden kann, schlägt ein Remoteprozeduraufruf eines solchen Servers mit einem Fehler RPC_S_SEC_PKG_ERROR fehl.
Hinweis RPC verwendet den SSP, um anzugeben, welche Sicherheitsoptionen erfolgreich ausgehandelt wurden. RPC schlägt wiederum einen Aufruf fehl, für den der Sicherheitsdienstanbieter (Security Service Provider, SSP) meldet, dass er keine Option aushandeln konnte. Einige Sicherheitsanbieter sind jedoch dafür bekannt, die erfolgreiche Aushandlung einer Option zu melden, auch wenn die Option nicht erfolgreich ausgehandelt wurde. NTLM meldet beispielsweise eine erfolgreiche Aushandlung der gegenseitigen Authentifizierung aus Gründen der Abwärtskompatibilität, auch wenn die gegenseitige Authentifizierung nicht unterstützt wird. Überprüfen Sie den jeweiligen SSP, der verwendet wird, um sein Verhalten in Bezug auf Sicherheitsoptionen zu ermitteln.
 
RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC
Derzeit nicht implementiert.
RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY
Akzeptiert die Anmeldeinformationen des Clients, auch wenn die Zertifizierungsstelle nicht in der Liste der vertrauenswürdigen Zertifizierungsstellen des Servers enthalten ist. Diese Konstante wird nur vom SCHANNEL-SSP verwendet.
RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE
Wenn angegeben, weist dieses Flag die RPC-Runtime auf dem Client an, einen Fehler zu ignorieren, um einen Sicherheitskontext einzurichten, der die Delegierung unterstützt. Wenn der Client die Delegierung anfragt und das Sicherheitssystem keinen Sicherheitskontext einrichten kann, der die Delegierung unterstützt, wird normalerweise ein Fehler RPC_S_SEC_PKG_ERROR zurückgegeben. wenn dieses Flag angegeben ist, wird kein Fehler zurückgegeben.
Hinweis Nicht unterstützt unter Windows XP und früheren Clienteditionen, nicht unterstützt unter Windows 2000 und früheren Servereditionen.
 
RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT
Dieses Flag gibt für RPC an, dass der Server lokal für den Computer ist, der den RPC-Aufruf ausgibt. In dieser Situation weist RPC den Endpunktzuordnungser an, nur Endpunkte aufzunehmen, die vom Prinzipal registriert sind, der in den Membern ServerPrincName oder Sid angegeben ist (diese Member sind nur in RPC_SECURITY_QOS_V3, RPC_SECURITY_QOS_V4 und RPC_SECURITY_QOS_V5 verfügbar). Weitere Informationen finden Sie unter Hinweise.
Hinweis Nicht unterstützt unter Windows XP und früheren Clienteditionen, nicht unterstützt unter Windows 2000 und früheren Servereditionen.
 
RPC_C_QOS_CAPABILITIES_SCHANNEL_FULL_AUTH_IDENTITY
Wenn festgelegt, verwendet die RPC-Runtime den SChannel-SSP, um smartcardbasierte Authentifizierung durchzuführen, ohne dass ein PIN-Eingabeaufforderungsdialogfeld vom Kryptografiedienstanbieter (Cryptographic Services Provider, CSP) angezeigt wird.

Beim Aufruf von RpcBindingSetAuthInfoEx muss der AuthIdentity-Parameter eine SEC_WINNT_AUTH_IDENTITY-Struktur sein, deren Member Folgendes enthalten:

  • Benutzer muss ein Zeiger auf eine SCHANNEL_CRED Struktur sein
  • UserLength muss 0 sein.
  • Domäne muss NULL sein.
  • DomainLength muss 0 sein.
  • Das Kennwort kann die Zertifikat-PIN oder NULL sein. Wenn Password die PIN ist, muss PasswordLength die richtige Länge für die PIN aufweisen, und wenn Password NULL ist, muss PasswordLength 0 sein.
Wenn das RPC_C_QOS_CAPABILITIES_SCHANNEL_FULL_AUTH_IDENTITY-Flag für einen anderen SSP als SChannel verwendet wird oder wenn die Member von SEC_WINNT_AUTH_IDENTITY nicht mit dem obigen übereinstimmen, wird RPC_S_INVALID_ARG von RpcBindingSetAuthInfoEx zurückgegeben.

IdentityTracking

Legt den Kontextnachverfolgungsmodus fest. Sollte auf einen der in der folgenden Tabelle dargestellten Werte festgelegt werden.

Wert Bedeutung
RPC_C_QOS_IDENTITY_STATIC
Der Sicherheitskontext wird nur einmal erstellt und wird während der gesamten Kommunikation nie überarbeitet, auch wenn er von der Clientseite geändert wird. Dies ist das Standardverhalten, wenn RPC_SECURITY_QOS nicht angegeben ist.
RPC_C_QOS_IDENTITY_DYNAMIC
Der Kontext wird immer dann überarbeitet, wenn die ModifiedId im Token des Clients geändert wird. Alle Protokolle verwenden die ModifiedId (siehe Hinweis).

Windows 2000: Alle Remoteprotokolle (alle Protokolle außer ncalrpc) verwenden die AuthenticationID, auch als LogonId bezeichnet, um Änderungen an der Clientidentität nachzuverfolgen. Das ncalrpc-Protokoll verwendet ModifiedId.

ImpersonationType

Ebene, auf der der Serverprozess die Identität des Clients annehmen kann.

Wert Bedeutung
RPC_C_IMP_LEVEL_DEFAULT
Verwendet die Standardidentitätswechselebene.
RPC_C_IMP_LEVEL_ANONYMOUS
Der Client stellt dem Server keine Identifikationsinformationen zur Verfügung. Der Server kann die Identität des Clients nicht annehmen oder den Client identifizieren. Viele Server lehnen Anrufe mit diesem Identitätswechseltyp ab.
Hinweis Einige Sicherheitsanbieter behandeln diesen Identitätswechseltyp möglicherweise als gleichwertig mit RPC_C_IMP_LEVEL_IMPERSONATE. Von den Windows-Sicherheitsanbietern erfolgt dies nur durch RPC_C_AUTHN_WINNT, wenn sie mit anderen Protokollsequenzen als ncalrpc verwendet werden. Dies geschieht auch durch RPC_C_AUTHN_GSS_NEGOTIATE, RPC_C_AUTHN_GSS_SCHANNEL und RPC_C_AUTHN_GSS_KERBEROS.
 
RPC_C_IMP_LEVEL_IDENTIFY
Der Server kann die Identität des Clients abrufen und die Identität des Clients annehmen, um Access Control List-Überprüfungen (ACL) durchzuführen, kann jedoch die Identität des Clients nicht annehmen. Weitere Informationen finden Sie unter Identitätswechselebenen .
Hinweis Einige Sicherheitsanbieter behandeln diesen Identitätswechseltyp möglicherweise als gleichwertig mit RPC_C_IMP_LEVEL_IMPERSONATE. Von den Windows-Sicherheitsanbietern erfolgt dies nur durch RPC_C_AUTHN_WINNT, wenn sie mit anderen Protokollsequenzen als ncalrpc verwendet werden. Dies geschieht auch durch RPC_C_AUTHN_GSS_NEGOTIATE, RPC_C_AUTHN_GSS_SCHANNEL und RPC_C_AUTHN_GSS_KERBEROS.
 
RPC_C_IMP_LEVEL_IMPERSONATE
Der Server kann die Identität des Sicherheitskontexts des Clients auf seinem lokalen System annehmen, aber nicht auf Remotesystemen.
RPC_C_IMP_LEVEL_DELEGATE
Der Server kann als der Client auftreten und dabei dessen Sicherheitskontext imitieren. Der Server kann auch ausgehende Aufrufe an andere Server tätigen, während er im Auftrag des Clients handelt. Der Server kann den Sicherheitskontext des Clients auf anderen Computern verwenden, um auf lokale und Remoteressourcen als Client zuzugreifen.

Hinweise

Die folgende Auflistung definiert die Verfügbarkeit von QOS-Versionen unter verschiedenen Windows-Betriebssystemen:

  • Version 1: Windows 2000 und höher.
  • Version 2: Windows XP mit Service Pack 1 (SP1) und höher.
  • Version 3: Windows Server 2003 und höher.
  • Version 4: Windows Vista und höher.
  • Version 5: Windows 8 und höher.
Windows-Editionen unterstützen auch Downlevelversionen. Windows Server 2003 unterstützt beispielsweise Version 3, aber auch die Versionen 1 und 2.

Die clientseitigen Sicherheitsfunktionen RpcBindingInqAuthInfoEx und RpcBindingSetAuthInfo verwenden die RPC_SECURITY_QOS-Struktur , um die Sicherheitsqualität des Diensts für ein Bindungshandle zu ermitteln oder festzulegen.

RPC unterstützt den RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT-Hinweis. Dieser Hinweis wird nur verwendet, wenn dynamische Endpunkte und die gegenseitige Authentifizierung verwendet werden. Darüber hinaus wird es für die ncadg_ Protokollsequenzen nicht unterstützt. Wenn dieses Flag für eine ncadg_ Protokollsequenz verwendet wird, oder ohne gegenseitige Authentifizierung, wird RPC_S_INVALID_ARG vom RpcBindingSetAuthInfoEx-Funktionsaufruf zurückgegeben. Dieses Flag soll einen Denial-of-Service-Angriff verhindern. Die Verwendung dieses Flags erzwingt die RPC-Runtime, den Endpunktzuordnungsmodul nur für Endpunkte anzufordern, die vom Prinzipal registriert sind, der in den Membern ServerPrincName oder Sid angegeben ist. Dadurch wird verhindert, dass ein Angreifer auf dem lokalen Computer versucht, Ihren RPC-Client zu verleiten, um eine Verbindung mit einem Spoofendpunkt herzustellen, der in der Endpunktzuordnung registriert ist. Da der Angriff nur lokal erfolgt (z. B. von einem Terminalservercomputer mit vielen Benutzern), funktioniert das Flag auch nur für lokale RPC-Aufrufe.

Hinweis Einige Sicherheitsanbieter, z. B. Kerberos, unterstützen den Delegierungs- und Identitätswechseltyp. Wenn der Client bei Windows-Editionen, die den Delegierungs-Identitätswechsel unterstützen, der Client die Delegierung angefordert hat, der Sicherheitsanbieter sie jedoch nicht bereitstellen kann, schlägt der Aufruf mit PRC_S_SEC_PKG_ERROR fehl, es sei denn, das RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE-Flag wird angegeben.
 

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Kopfzeile rpcdce.h (include Rpc.h)

Weitere Informationen

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V3

RPC_SECURITY_QOS_V4

RPC_SECURITY_QOS_V5

RpcBindingInqAuthInfoEx

RpcBindingSetAuthInfoEx