Partager via


RPC_BINDING_HANDLE_SECURITY_V1_A structure (rpcdce.h)

La structure RPC_BINDING_HANDLE_SECURITY_V1 contient les options de sécurité de base avec lesquelles créer un handle de liaison RPC.

Syntaxe

typedef struct _RPC_BINDING_HANDLE_SECURITY_V1_A {
  unsigned long             Version;
  unsigned char             *ServerPrincName;
  unsigned long             AuthnLevel;
  unsigned long             AuthnSvc;
  SEC_WINNT_AUTH_IDENTITY_A *AuthIdentity;
  RPC_SECURITY_QOS          *SecurityQos;
} RPC_BINDING_HANDLE_SECURITY_V1_A, *PRPC_BINDING_HANDLE_SECURITY_V1_A;

Membres

Version

Version de cette structure. Pour RPC_BINDING_HANDLE_SECURITY_V1 cette valeur doit être définie sur 1.

ServerPrincName

Pointeur vers une chaîne qui contient le nom de principal du serveur référencé par le handle de liaison. Le contenu du nom et sa syntaxe sont définis par le service d’authentification utilisé.

AuthnLevel

Niveau d’authentification à effectuer sur les appels de procédure distante effectués à l’aide de ce handle de liaison. Pour obtenir la liste des niveaux d’authentification pris en charge par RPC, consultez Constantes de niveau d’authentification.

Si AuthnSvc est défini sur RPC_C_AUTHN_NONE, ce membre doit également être défini sur RPC_C_AUTHN_NONE.

AuthnSvc

Service d’authentification à utiliser lors de la liaison.

Spécifiez RPC_C_AUTHN_NONE pour désactiver l’authentification pour les appels de procédure distante effectués à l’aide du handle de liaison.

Si RPC_C_AUTHN_DEFAULT est spécifié, la bibliothèque runtime RPC utilise le service d’authentification RPC_C_AUTHN_WINNT pour les appels de procédure distante effectués à l’aide du handle de liaison.

Si AuthnLevel est défini sur RPC_C_AUTHN_NONE, ce membre doit également être défini sur RPC_C_AUTHN_NONE.

AuthIdentity

SEC_WINNT_AUTH_IDENTITY structure qui contient les informations d’identification d’authentification et d’autorisation du client appropriées pour le service d’authentification et d’autorisation sélectionné.

SecurityQos

RPC_SECURITY_QOS structure qui contient les paramètres de qualité de service de sécurité pour le handle de liaison.

Note Pour obtenir la liste des services d’authentification pris en charge par RPC, consultez Constantes de service d’authentification.
 

Remarques

Si cette structure n’est pas passée à RpcBindingCreate , c’est-à-dire si le paramètre Security de RpcBindingCreate a la valeur NULL , les comportements de sécurité par défaut suivants sont supposés :

  • Pour la séquence de protocole ncalrpc (RPC local), RPC utilise la sécurité au niveau du transport. Cela signifie que RPC utilisera les mécanismes de sécurité offerts par le noyau Windows pour assurer la sécurité, et RPC n’authentifiera pas le serveur, car il se connecte à l’aide de l’identité de thread actuelle. Dans ce cas, le suivi des identités est statique, le type d’emprunt d’identité est défini sur « Emprunt d’identité » et le niveau d’authentification est défini sur « Confidentialité ».
  • Pour la séquence de protocole ncacn_np, RPC utilise également la sécurité au niveau du transport. Si l’appel est distant, RPC utilise les mécanismes de sécurité fournis par le redirecteur du système de fichiers Windows et il n’existe aucune authentification mutuelle. Dans ce cas, l’identité est l’identité de thread actuelle, l’état de suivi de l’identité est statique, le type d’emprunt d’identité est défini sur « Emprunt d’identité » et le niveau d’authentification est déterminé par les stratégies de l’ordinateur distant.

    Si l’appel est local, RPC utilise les mécanismes de sécurité fournis par le système de fichiers NPFS (Named Pipe File System) et il n’existe pas non plus d’authentification mutuelle. Dans ce cas, l’identité est l’identité de thread actuelle ou toute identité établie par le biais de la commande « net use » pour le serveur. L’état de suivi des identités est dynamique, le type d’emprunt d’identité est défini sur « Emprunt d’identité » et le niveau d’authentification est défini sur « Confidentialité ».

  • Pour les séquences de protocole ncacn_ip_tcp, ncacn_ip_udp et ncacn_http, aucune sécurité n’est utilisée lorsque La sécurité est définie sur NULL. Le serveur n’effectue pas l’emprunt d’identité et toutes les données sont envoyées en texte clair. Pour fournir une protection maximale des données, l’application doit toujours fournir des données de sécurité.

Le tableau suivant récapitule les paramètres de sécurité par défaut pour les différentes séquences de protocole si le paramètre Security de RpcBindingCreate a la valeur NULL.

Paramètres de sécurité par défaut ncalrpc ncacn_np locale ncacn_np à distance ncacn_ip_tcp, ncacn_ip_udp et ncacn_http
Mécanisme de sécurité Noyau Windows NPFS Redirecteur du système de fichiers None
Niveau d’authentification Confidentialité Confidentialité Dépendant de la stratégie de serveur None
Authentification mutuelle ? Non Non Non Non
Type d’emprunt d’identité Impersonate Impersonate Impersonate N/A
Type de suivi des identités statique Dynamique statique N/A
Effectif uniquement ? Oui Non N/A N/A
Identité d’appel Thread en cours Thread en cours Paramètres de thread ou de « net use » actuels N/A
 
Note Si vous créez votre handle de liaison en appelant l’API RpcBindingFromStringBinding , le suivi des identités par défaut pour ncalrpc en l’absence de paramètres de sécurité spécifiques est dynamique.

Si vous créez un handle de liaison rapide en appelant l’API RpcBindingCreate , le suivi des identités par défaut pour ncalrpc en l’absence de paramètres de sécurité spécifiques est statique.

Vous devez être conscient des différences entre ces deux API si vous passez de l’une à l’autre dans votre application.

Une fois le handle de liaison créé, les API RpcBindingSetAuthInfo et RpcBindingSetAuthInfoEx peuvent être utilisées pour modifier les paramètres du handle de liaison défini avec cette structure.

 

Configuration requise

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

Voir aussi

RPC_BINDING_HANDLE

RpcBindingBind

RpcBindingCreate