RPC_SECURITY_QOS_V4_A-Struktur (rpcdce.h)

Die RPC_SECURITY_QOS_V4-Struktur definiert Sicherheitseinstellungen für die Dienstqualität der Version 4 für ein Bindungshandle. Weitere Informationen finden Sie unter Hinweise zur Versionsverfügbarkeit unter Windows-Editionen.

Syntax

typedef struct _RPC_SECURITY_QOS_V4_A {
  unsigned long Version;
  unsigned long Capabilities;
  unsigned long IdentityTracking;
  unsigned long ImpersonationType;
  unsigned long AdditionalSecurityInfoType;
  union {
    RPC_HTTP_TRANSPORT_CREDENTIALS_A *HttpCredentials;
  } u;
  void          *Sid;
  unsigned int  EffectiveOnly;
} RPC_SECURITY_QOS_V4_A, *PRPC_SECURITY_QOS_V4_A;

Members

Version

Version der verwendeten RPC_SECURITY_QOS-Struktur . In diesem Thema wird Version 4 der RPC_SECURITY_QOS-Struktur dokumentiert. Weitere Versionen finden Sie unter RPC_SECURITY_QOS, RPC_SECURITY_QOS_V2, RPC_SECURITY_QOS_V3 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
Es sind keine anbieterspezifischen Funktionen erforderlich.
RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH
Die RPC-Laufzeit fordert die gegenseitige Authentifizierung vom Sicherheitsanbieter an. Einige Sicherheitsanbieter unterstützen keine gegenseitige Authentifizierung. Wenn der Sicherheitsanbieter keine gegenseitige Authentifizierung 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. wiederum schlägt ein RPC-Aufruf fehl, wenn der SSP meldet, dass er keine Option aushandeln konnte. Es ist jedoch bekannt, dass einige Sicherheitsanbieter die erfolgreiche Aushandlung einer Option melden, auch wenn die Option nicht erfolgreich ausgehandelt wurde. Beispielsweise meldet NTLM 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, ob der jeweilige SSP verwendet wird, um sein Verhalten in Bezug auf Sicherheitsoptionen zu bestimmen.
 
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
Die RPC-Runtime auf dem Client ignoriert einen Fehler, 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 Unter Windows XP und früheren Clienteditionen nicht unterstützt, unter Windows 2000 und früheren Servereditionen nicht unterstützt.
 
RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT
Der Server befindet sich lokal auf dem Computer, der den RPC-Aufruf vornimmt. In diesem Fall weist RPC die Endpunktzuordnung an, nur Endpunkte abzurufen, 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 Unter Windows XP und früheren Clienteditionen nicht unterstützt, unter Windows 2000 und früheren Servereditionen nicht unterstützt.
 

IdentityTracking

Der Kontextnachverfolgungsmodus als einer der folgenden Werte.

Wert Bedeutung
RPC_C_QOS_IDENTITY_STATIC
Der Sicherheitskontext wird nur einmal erstellt und während der gesamten Kommunikation nie überarbeitet, auch wenn er von der Clientseite geändert wird. Dies ist das Standardverhalten, wenn RPC_SECURITY_QOS_V4 nicht angegeben ist.
RPC_C_QOS_IDENTITY_DYNAMIC
Der Sicherheitskontext 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

Die 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 keine Identifikationsinformationen für den Server bereit. Der Server kann die Identität des Clients nicht annehmen oder den Client identifizieren. Viele Server weisen Aufrufe mit diesem Identitätswechseltyp ab.
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, aber keine Identität des Clients 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.
 
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.

AdditionalSecurityInfoType

Der Typ der zusätzlichen Anmeldeinformationen , die in u union vorhanden sind. Die folgenden Konstanten werden unterstützt:

Unterstützte Konstanten Bedeutung
0
In u union werden keine zusätzlichen Anmeldeinformationen übergeben.
RPC_C_AUTHN_INFO_TYPE_HTTP
Das HttpCredentials-Element der u union zeigt auf eine RPC_HTTP_TRANSPORT_CREDENTIALS-Struktur . Dieser Wert kann nur verwendet werden, wenn die Protokollsequenz ncacn_http ist. Jede andere Protokollsequenz gibt RPC_S_INVALID_ARG zurück.

u

u.HttpCredentials

Zusätzlicher Satz von Anmeldeinformationen, die an RPC in Form einer RPC_HTTP_TRANSPORT_CREDENTIALS-Struktur übergeben werden sollen. Wird verwendet, wenn das AdditionalSecurityInfoType-Element auf RPC_C_AUTHN_INFO_TYPE_HTTP festgelegt ist.

Sid

Zeiger auf eine Sicherheits-ID (SID). Die SID ist eine Alternative zum ServerPrincName-Member , und es kann nur ein Element angegeben werden. Der Sid-Member kann nicht auf null festgelegt werden, wenn der Sicherheitsanbieter der SCHANNEL-SSP ist. Einige Protokollsequenzen verwenden sid intern aus Sicherheitsgründen, andere einen ServerPrincName. Beispielsweise verwendet ncalrpc intern eine Sid , und wenn der Aufrufer sowohl die SID als auch den ServerPrincName kennt, kann ein Aufruf mit ncalrpc in einigen Fällen viel schneller abgeschlossen werden, wenn die SID übergeben wird. Im Gegensatz dazu verwenden die ncacn_ und ncadg_ Protokollsequenzen intern einen ServerPrincName und können daher Aufrufe schneller ausführen, wenn serverPrincName bereitgestellt wird.

EffectiveOnly

Wenn festgelegt, werden vom Server nur aktivierte Berechtigungen angezeigt.

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 abzufragen oder festzulegen.

RPC unterstützt den RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT Hinweis (unter Windows XP und früheren Clienteditionen nicht unterstützt, unter Windows 2000 und früheren Servereditionen nicht unterstützt). Dieser Hinweis wird nur verwendet, wenn dynamische Endpunkte und 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 oder ohne gegenseitige Authentifizierung verwendet wird, wird RPC_S_INVALID_ARG vom RpcBindingSetAuthInfoEx-Funktionsaufruf zurückgegeben. Dieses Flag wurde entwickelt, um einen Denial-of-Service-Angriff zu verhindern. Die Verwendung dieses Flags erzwingt, dass die RPC-Runtime die Endpunktzuordnung nur für Endpunkte anfragt, 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 dazu zu verleiten, eine Verbindung mit einem Spoofendpunkt herzustellen, den er in der Endpunktzuordnung registriert hat. Da der Angriff nur lokal erfolgt (z. B. von einem Terminalservercomputer mit vielen Benutzern), funktioniert das Flag auch nur für lokal durchgeführte RPC-Aufrufe.

Hinweis Einige Sicherheitsanbieter, z. B. Kerberos, unterstützen den Delegierungswechseltyp. Wenn der Client bei Windows-Editionen, die den Delegierungswechseltyp 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 flag RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE ist angegeben.
 

Anforderungen

   
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

RPC_BINDING_HANDLE_SECURITY_V1

RPC_HTTP_TRANSPORT_CREDENTIALS

RPC_SECURITY_QOS

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V3

RPC_SECURITY_QOS_V5

RpcBindingInqAuthInfoEx

RpcBindingSetAuthInfoEx