Partager via


RPC_SECURITY_QOS structure (rpcdce.h)

La structure RPC_SECURITY_QOS définit les paramètres de qualité de service de sécurité sur un handle de liaison. Consultez Remarques pour la disponibilité des versions sur les éditions de Windows.

Syntaxe

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

Membres

Version

Version de la structure RPC_SECURITY_QOS utilisée. Cette rubrique documente la version 1 de la structure RPC_SECURITY_QOS . Consultez RPC_SECURITY_QOS_V2, RPC_SECURITY_QOS_V3, RPC_SECURITY_QOS_V4 et RPC_SECURITY_QOS_V5 pour d’autres versions.

Capabilities

Services de sécurité fournis à l’application. Capabilities est un ensemble d’indicateurs qui peuvent être combinés à l’aide de l’opérateur OR au niveau du bit.

Valeur Signification
RPC_C_QOS_CAPABILITIES_DEFAULT
Utilisé lorsqu’aucune fonctionnalité spécifique au fournisseur n’est nécessaire.
RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH
La spécification de cet indicateur entraîne la demande d’authentification mutuelle au fournisseur de sécurité au moment de l’exécution du RPC. Certains fournisseurs de sécurité ne prennent pas en charge l’authentification mutuelle. Si le fournisseur de sécurité ne prend pas en charge l’authentification mutuelle ou si l’identité du serveur ne peut pas être établie, un appel de procédure distante à ce serveur échoue avec une erreur RPC_S_SEC_PKG_ERROR.
Note RPC s’appuie sur le SSP pour indiquer quelles options de sécurité ont été correctement négociées ; RPC échoue à son tour tout appel pour lequel le fournisseur de services de sécurité (SSP) signale qu’il n’a pas pu négocier une option. Toutefois, certains fournisseurs de sécurité sont connus pour signaler la négociation réussie d’une option même lorsque l’option n’a pas été négociée avec succès. Par exemple, NTLM signale la négociation réussie de l’authentification mutuelle pour des raisons de compatibilité descendante, même s’il ne prend pas en charge l’authentification mutuelle. Vérifiez si le fournisseur de services partagés particulier est utilisé pour déterminer son comportement par rapport aux options de sécurité.
 
RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC
Actuellement non implémenté.
RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY
Accepte les informations d’identification du client même si l’autorité de certification ne figure pas dans la liste des autorités de certification approuvées du serveur. Cette constante est utilisée uniquement par le SSP SCHANNEL.
RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE
Lorsqu’il est spécifié, cet indicateur indique au runtime RPC sur le client d’ignorer une erreur pour établir un contexte de sécurité qui prend en charge la délégation. Normalement, si le client demande la délégation et que le système de sécurité ne peut pas établir un contexte de sécurité qui prend en charge la délégation, l’erreur RPC_S_SEC_PKG_ERROR est retournée ; lorsque cet indicateur est spécifié, aucune erreur n’est retournée.
Note Non pris en charge sur Windows XP et les éditions clientes antérieures, non pris en charge sur Windows 2000 et les éditions serveur antérieures.
 
RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT
Cet indicateur spécifie à RPC que le serveur est local sur l’ordinateur qui effectue l’appel RPC. Dans ce cas, RPC indique au mappeur de point de terminaison de récupérer uniquement les points de terminaison inscrits par le principal spécifié dans les membres ServerPrincName ou Sid (ces membres sont disponibles dans RPC_SECURITY_QOS_V3, RPC_SECURITY_QOS_V4 et RPC_SECURITY_QOS_V5 uniquement). Pour plus d'informations, consultez la section Notes.
Note Non pris en charge sur Windows XP et les éditions clientes antérieures, non pris en charge sur Windows 2000 et les éditions serveur antérieures.
 
RPC_C_QOS_CAPABILITIES_SCHANNEL_FULL_AUTH_IDENTITY
S’il est défini, le runtime RPC utilise le SSP SChannel pour effectuer l’authentification par carte à puce sans afficher de boîte de dialogue d’invite de code confidentiel par le fournisseur de services de chiffrement (CSP).

Dans l’appel à RpcBindingSetAuthInfoEx, le paramètre AuthIdentity doit être une structure SEC_WINNT_AUTH_IDENTITY dont les membres contiennent les éléments suivants :

  • L’utilisateur doit être un pointeur vers une structure de SCHANNEL_CRED
  • UserLength doit être 0
  • Le domaine doit être NULL
  • DomainLength doit être 0
  • Le mot de passe peut être le code PIN du certificat ou NULL. Si Password est le code confidentiel, PasswordLength doit avoir la longueur correcte pour le code confidentiel, et si Password a la valeur NULL, PasswordLength doit avoir la valeur 0
Si l’indicateur RPC_C_QOS_CAPABILITIES_SCHANNEL_FULL_AUTH_IDENTITY est utilisé pour tout fournisseur de services partagés autre que SChannel, ou si les membres de SEC_WINNT_AUTH_IDENTITY ne sont pas conformes à ce qui précède, RPC_S_INVALID_ARG sera retourné par RpcBindingSetAuthInfoEx.

IdentityTracking

Définit le mode de suivi du contexte. Doit être défini sur l’une des valeurs indiquées dans le tableau suivant.

Valeur Signification
RPC_C_QOS_IDENTITY_STATIC
Le contexte de sécurité n’est créé qu’une seule fois et n’est jamais révisé pendant l’intégralité de la communication, même si le côté client le modifie. Il s’agit du comportement par défaut si RPC_SECURITY_QOS n’est pas spécifié.
RPC_C_QOS_IDENTITY_DYNAMIC
Le contexte est révisé chaque fois que le ModifiedId dans le jeton du client est modifié. Tous les protocoles utilisent l’Id modifié (voir la remarque).

Windows 2000 : Tous les protocoles distants (tous les protocoles autres que ncalrpc) utilisent l’AuthenticationID, également appelé LogonId, pour suivre les modifications apportées à l’identité du client. Le protocole ncalrpc utilise ModifiedId.

ImpersonationType

Niveau auquel le processus serveur peut emprunter l’identité du client.

Valeur Signification
RPC_C_IMP_LEVEL_DEFAULT
Utilise le niveau d’emprunt d’identité par défaut.
RPC_C_IMP_LEVEL_ANONYMOUS
Le client ne fournit pas d’informations d’identification au serveur. Le serveur ne peut pas emprunter l’identité du client ou identifier le client. De nombreux serveurs rejettent les appels avec ce type d’emprunt d’identité.
Note Certains fournisseurs de sécurité peuvent traiter ce type d’emprunt d’identité comme équivalent à RPC_C_IMP_LEVEL_IMPERSONATE. À partir des fournisseurs de sécurité Windows, cette opération est effectuée par RPC_C_AUTHN_WINNT uniquement lorsqu’elle est utilisée avec des séquences de protocole autres que ncalrpc. Elle est également effectuée par RPC_C_AUTHN_GSS_NEGOTIATE, RPC_C_AUTHN_GSS_SCHANNEL et RPC_C_AUTHN_GSS_KERBEROS.
 
RPC_C_IMP_LEVEL_IDENTIFY
Le serveur peut obtenir l’identité du client et emprunter l’identité du client pour effectuer Access Control vérifications de liste (ACL), mais ne peut pas emprunter l’identité du client. Pour plus d’informations, consultez Niveaux d’emprunt d’identité.
Note Certains fournisseurs de sécurité peuvent traiter ce type d’emprunt d’identité comme équivalent à RPC_C_IMP_LEVEL_IMPERSONATE. À partir des fournisseurs de sécurité Windows, cette opération est effectuée par RPC_C_AUTHN_WINNT uniquement lorsqu’elle est utilisée avec des séquences de protocole autres que ncalrpc. Elle est également effectuée par RPC_C_AUTHN_GSS_NEGOTIATE, RPC_C_AUTHN_GSS_SCHANNEL et RPC_C_AUTHN_GSS_KERBEROS.
 
RPC_C_IMP_LEVEL_IMPERSONATE
Le serveur peut emprunter l’identité du contexte de sécurité du client sur son système local, mais pas sur les systèmes distants.
RPC_C_IMP_LEVEL_DELEGATE
Le serveur peut emprunter l'identité du contexte de sécurité du client tout en agissant au nom du client. Le serveur peut également effectuer des appels sortants vers d’autres serveurs tout en agissant pour le compte du client. Le serveur peut utiliser le contexte de sécurité du client sur d’autres ordinateurs pour accéder aux ressources locales et distantes en tant que client.

Remarques

La liste suivante définit la disponibilité des versions QOS sur différents systèmes d’exploitation Windows :

  • Version 1 : Windows 2000 et versions ultérieures.
  • Version 2 : Windows XP avec Service Pack 1 (SP1) et versions ultérieures.
  • Version 3 : Windows Server 2003 et versions ultérieures.
  • Version 4 : Windows Vista et versions ultérieures.
  • Version 5 : Windows 8 et versions ultérieures.
Les éditions de Windows prennent également en charge les versions de bas niveau. Par exemple, Windows Server 2003 prend en charge la version 3, mais également les versions 1 et 2.

Les fonctions de sécurité côté client RpcBindingInqAuthInfoEx et RpcBindingSetAuthInfo utilisent la structure RPC_SECURITY_QOS pour vous renseigner sur la qualité de service de sécurité d’un handle de liaison ou pour définir celle-ci.

RPC prend en charge l’indicateur de RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT. Cet indicateur est utilisé uniquement lorsque des points de terminaison dynamiques et l’authentification mutuelle sont utilisés. En outre, il n’est pas pris en charge pour les séquences de protocole ncadg_ . Si cet indicateur est utilisé pour une séquence de protocole ncadg_ , ou sans utiliser l’authentification mutuelle, RPC_S_INVALID_ARG est retourné par l’appel de fonction RpcBindingSetAuthInfoEx . Cet indicateur est conçu pour empêcher une attaque par déni de service. L’utilisation de cet indicateur force le runtime RPC à demander au mappeur de point de terminaison uniquement pour les points de terminaison inscrits par le principal spécifié dans les membres ServerPrincName ou Sid . Cela empêche un attaquant sur l’ordinateur local d’essayer d’inciter votre client RPC à se connecter à un point de terminaison usurpé qu’il a inscrit dans le mappeur de point de terminaison. Notez que, étant donné que l’attaque est locale uniquement (par exemple à partir d’un ordinateur Terminal Server avec de nombreux utilisateurs), l’indicateur fonctionne également uniquement pour les appels RPC effectués localement.

Note Certains fournisseurs de sécurité, tels que Kerberos, prennent en charge le type d’emprunt d’identité de délégation. Sur les éditions Windows qui prennent en charge le type d’emprunt d’identité de délégation, si le client a demandé la délégation mais que le fournisseur de sécurité ne peut pas la fournir, l’appel échoue avec PRC_S_SEC_PKG_ERROR, sauf si l’indicateur RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE est spécifié.
 

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
En-tête rpcdce.h (inclure Rpc.h)

Voir aussi

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V3

RPC_SECURITY_QOS_V4

RPC_SECURITY_QOS_V5

RpcBindingInqAuthInfoEx

RpcBindingSetAuthInfoEx