Partager via


structure RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W (rpcdce.h)

La structure RPC_HTTP_TRANSPORT_CREDENTIALS_V3 définit des informations d’identification supplémentaires à authentifier auprès d’un serveur proxy RPC ou d’un serveur proxy HTTP lors de l’utilisation de RPC/HTTP.

RPC_HTTP_TRANSPORT_CREDENTIALS_V3 étend RPC_HTTP_TRANSPORT_CREDENTIALS_V2 en autorisant l’utilisation de formulaires d’informations d’identification arbitraires.

Syntaxe

typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W {
  RPC_AUTH_IDENTITY_HANDLE TransportCredentials;
  unsigned long            Flags;
  unsigned long            AuthenticationTarget;
  unsigned long            NumberOfAuthnSchemes;
  unsigned long            *AuthnSchemes;
  unsigned short           *ServerCertificateSubject;
  RPC_AUTH_IDENTITY_HANDLE ProxyCredentials;
  unsigned long            NumberOfProxyAuthnSchemes;
  unsigned long            *ProxyAuthnSchemes;
} RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W, *PRPC_HTTP_TRANSPORT_CREDENTIALS_V3_W;

Membres

TransportCredentials

Pointeur vers un handle d’authentification opaque sous la forme d’une structure de RPC_AUTH_IDENTITY_HANDLE .

Flags

Ensemble d’indicateurs qui peuvent être combinés avec l’opérateur OR au niveau du bit.

Valeur Signification
RPC_C_HTTP_FLAG_USE_SSL
Indique à RPC d’utiliser SSL pour communiquer avec le proxy RPC.
RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME
Lorsqu’il est défini, RPC choisit le premier schéma du tableau AuthnSchemes et tente de s’authentifier auprès du proxy RPC. Si le proxy RPC ne prend pas en charge le schéma d’authentification sélectionné, l’appel échoue. Lorsqu’il n’est pas défini, le client RPC interroge le proxy RPC pour les schémas d’authentification pris en charge et en choisit un.

AuthenticationTarget

Spécifie la cible d’authentification.

Doit être défini sur une ou les deux valeurs suivantes :

Valeur Signification
RPC_C_HTTP_AUTHN_TARGET_SERVER
Authentifiez-vous auprès du proxy RPC, qui est le serveur HTTP du point de vue HTTP. Il s’agit de la valeur la plus courante.
RPC_C_HTTP_AUTHN_TARGET_PROXY
Authentifiez-vous auprès du proxy HTTP. Cette valeur est rare.

NumberOfAuthnSchemes

Nombre d’éléments dans le tableau AuthnScheme .

AuthnSchemes

Pointeur vers un tableau de schémas d’authentification que le client est prêt à utiliser. Chaque élément du tableau peut contenir l’une des constantes suivantes :

RPC_C_HTTP_AUTHN_SCHEME_BASIC

RPC_C_HTTP_AUTHN_SCHEME_NTLM

RPC_C_HTTP_AUTHN_SCHEME_PASSPORT

RPC_C_HTTP_AUTHN_SCHEME_DIGEST

RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE

RPC_C_HTTP_AUTHN_SCHEME_PASSPORT, RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE et RPC_C_HTTP_AUTHN_SCHEME_DIGEST sont définis en tant que constantes, mais ne sont pas pris en charge actuellement. Les appelants ne doivent pas les spécifier ; cela entraîne RPC_S_CANNOT_SUPPORT erreur. Chaque constante peut être spécifiée une seule fois. RPC ne vérifie pas cette restriction pour des raisons de performances, mais la spécification d’une constante plusieurs fois produit des résultats non définis.

L’algorithme permettant de choisir le schéma d’authentification réel est le suivant :

Si RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME est spécifié, le premier schéma d’authentification est choisi. S’il n’est pas pris en charge par le serveur, l’établissement de la connexion échoue. Si RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME n’est pas spécifié, le client RPC tente d’abord une connexion anonyme au proxy RPC. Si IIS retourne une demande d’authentification, le client RPC choisit le schéma d’authentification préféré par le serveur s’il se trouve également dans le tableau AuthnScheme . Si le schéma préféré par le serveur n’est pas dans le tableau AuthnScheme , le tableau AuthnScheme est parcouru du début à la fin, et si un schéma est trouvé qui est également pris en charge par le serveur, ce schéma d’authentification est utilisé.

ServerCertificateSubject

Contient une chaîne facultative avec le nom de principal de serveur attendu. Le nom principal est au même format que celui généré pour RpcCertGeneratePrincipalName (pour plus d’informations, consultez Noms principaux). Ce membre est utilisé uniquement lorsque SSL est utilisé. Dans ce cas, le certificat de serveur est vérifié par rapport au nom principal généré. S’ils ne correspondent pas, une erreur est retournée. Ce membre permet aux clients d’authentifier le proxy RPC.

ProxyCredentials

Pointeur vers un handle d’authentification opaque sous la forme d’une structure de RPC_AUTH_IDENTITY_HANDLE lors de l’authentification auprès d’un serveur proxy HTTP. ProxyCredentials est valide uniquement lorsque AuthenticationTarget contient RPC_C_HTTP_AUTHN_TARGET_PROXY.

NumberOfProxyAuthnSchemes

Nombre d’éléments dans le tableau ProxyAuthnSchemes lors de l’authentification auprès d’un serveur proxy HTTP. NumberOfProxyAuthnSchemes est valide uniquement lorsque AuthenticationTarget contient RPC_C_HTTP_AUTHN_TARGET_PROXY.

ProxyAuthnSchemes

Pointeur vers un tableau de schémas d’authentification que le client est prêt à utiliser lors de l’authentification auprès d’un serveur proxy HTTP. Chaque élément du tableau peut contenir l’une des constantes suivantes. ProxyAuthnSchemes n’est valide que lorsque AuthenticationTarget contient RPC_C_HTTP_AUTHN_TARGET_PROXY.

RPC_C_HTTP_AUTHN_SCHEME_BASIC

RPC_C_HTTP_AUTHN_SCHEME_NTLM

RPC_C_HTTP_AUTHN_SCHEME_PASSPORT

RPC_C_HTTP_AUTHN_SCHEME_DIGEST

RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE

Remarques

Si le membre TransportCredentials a la valeur NULL et que le schéma d’authentification est NTLM, les informations d’identification de l’utilisateur actuellement connecté sont utilisées. Pour éviter d’exposer les informations d’identification utilisateur sur le réseau via un hachage LM faible, les informations d’identification d’ouverture de session de l’utilisateur sont utilisées uniquement si l’une ou les deux conditions suivantes sont remplies :

  • L’appelant a demandé l’utilisation de SSL et a utilisé le membre ServerCertificateSubject . Ce scénario garantit que les informations d’identification sont protégées à la fois en transit et à la destination finale, même si un hachage faible est utilisé.
  • La clé lncompatibilitylevel a la valeur 2 ou supérieure. Cela oblige le fournisseur de sécurité NTLM à émettre ou à répondre uniquement au hachage NT fort, et non au hachage LM faible. En outre, les clients sont encouragés à utiliser le niveau 3 ou supérieur, qui tentera NTLMv2.
Si la version Unicode de la fonction RpcBindingSetAuthInfoEx est utilisée, les versions Unicode des structures RPC_HTTP_TRANSPORT_CREDENTIALS_V3 et SEC_WINNT_AUTH_IDENTITY doivent également être fournies, et le membre Flags dans TransportCredentials doit être défini sur SEC_WINNT_AUTH_IDENTITY_UNICODE. Si la version ANSI de la fonction RpcBindingSetAuthInfoEx est utilisée, les versions ANSI des structures RPC_HTTP_TRANSPORT_CREDENTIALS_V3 et SEC_WINNT_AUTH_IDENTITY doivent être fournies, et le membre Flags dans TransportCredentials doit être défini sur SEC_WINNT_AUTH_IDENTITY_ANSI.

Configuration requise

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

Voir aussi

Noms principaux

RPC_HTTP_TRANSPORT_CREDENTIALS

RPC_HTTP_TRANSPORT_CREDENTIALS_V2

RPC_SECURITY_QOS

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V3

Appels de procédure distante à l’aide de RPC sur HTTP

RpcBindingSetAuthInfoEx

RpcCertGeneratePrincipalName

SEC_WINNT_AUTH_IDENTITY