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 |
---|---|
|
Utilisé lorsqu’aucune fonctionnalité spécifique au fournisseur n’est nécessaire. |
|
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é.
|
|
Actuellement non implémenté. |
|
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. |
|
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.
|
|
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.
|
|
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 :
|
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 |
---|---|
|
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é. |
|
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 |
---|---|
|
Utilise le niveau d’emprunt d’identité par défaut. |
|
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.
|
|
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.
|
|
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. |
|
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 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.
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) |