CoSetProxyBlanket, fonction (combaseapi.h)

Définit les informations d’authentification qui seront utilisées pour effectuer des appels sur le proxy spécifié. Il s’agit d’une fonction d’assistance pour IClientSecurity ::SetBlanket.

Syntaxe

HRESULT CoSetProxyBlanket(
  [in]           IUnknown                 *pProxy,
  [in]           DWORD                    dwAuthnSvc,
  [in]           DWORD                    dwAuthzSvc,
  [in, optional] OLECHAR                  *pServerPrincName,
  [in]           DWORD                    dwAuthnLevel,
  [in]           DWORD                    dwImpLevel,
  [in, optional] RPC_AUTH_IDENTITY_HANDLE pAuthInfo,
  [in]           DWORD                    dwCapabilities
);

Paramètres

[in] pProxy

Proxy à définir.

[in] dwAuthnSvc

Service d’authentification à utiliser. Pour obtenir la liste des valeurs possibles, consultez Constantes du service d’authentification. Utilisez RPC_C_AUTHN_NONE si aucune authentification n’est requise. Si RPC_C_AUTHN_DEFAULT est spécifié, DCOM choisit un service d’authentification en suivant son algorithme de négociation de couverture de sécurité normal.

[in] dwAuthzSvc

Service d’autorisation à utiliser. Pour obtenir la liste des valeurs possibles, consultez Constantes d’autorisation. Si RPC_C_AUTHZ_DEFAULT est spécifié, DCOM sélectionne un service d’autorisation en suivant son algorithme de négociation de couverture de sécurité normal. RPC_C_AUTHZ_NONE doit être utilisé comme service d’autorisation si NTLMSSP, Kerberos ou Schannel est utilisé comme service d’authentification.

[in, optional] pServerPrincName

Nom du principal du serveur à utiliser avec le service d’authentification. Si COLE_DEFAULT_PRINCIPAL est spécifié, DCOM choisit un nom principal à l’aide de son algorithme de négociation de couverture de sécurité. Si Kerberos est utilisé comme service d’authentification, cette valeur ne doit pas être NULL. Il doit s’agir du nom de principal correct du serveur, sinon l’appel échoue.

Si Schannel est utilisé comme service d’authentification, cette valeur doit être l’un des formulaires msstd ou fullsic décrits dans Noms de principaux, ou NULL si vous ne souhaitez pas l’authentification mutuelle.

En règle générale, la spécification de NULL ne réinitialise pas le nom du principal du serveur sur le proxy ; au lieu de cela, le paramètre précédent sera conservé. Vous devez être prudent lorsque vous utilisez NULL comme pServerPrincName lors de la sélection d’un autre service d’authentification pour le proxy, car il n’existe aucune garantie que le nom de principal précédemment défini soit valide pour le service d’authentification nouvellement sélectionné.

[in] dwAuthnLevel

Niveau d’authentification à utiliser. Pour obtenir la liste des valeurs possibles, consultez Constantes de niveau d’authentification. Si RPC_C_AUTHN_LEVEL_DEFAULT est spécifié, DCOM choisit un niveau d’authentification en suivant son algorithme de négociation de couverture de sécurité normal. Si cette valeur est none, le service d’authentification doit également être none.

[in] dwImpLevel

Niveau d’emprunt d’identité à utiliser. Pour obtenir la liste des valeurs possibles, consultez Constantes de niveau d’emprunt d’identité. Si RPC_C_IMP_LEVEL_DEFAULT est spécifié, DCOM choisit un niveau d’emprunt d’identité en suivant son algorithme de négociation de couverture de sécurité normal. Si NTLMSSP est le service d’authentification, cette valeur doit être RPC_C_IMP_LEVEL_IMPERSONATE ou RPC_C_IMP_LEVEL_IDENTIFY. NTLMSSP prend également en charge l’emprunt d’identité au niveau des délégués (RPC_C_IMP_LEVEL_DELEGATE) sur le même ordinateur. Si Schannel est le service d’authentification, ce paramètre doit être RPC_C_IMP_LEVEL_IMPERSONATE.

[in, optional] pAuthInfo

Pointeur vers une valeur RPC_AUTH_IDENTITY_HANDLE qui établit l’identité du client. Le format de la structure référencée par le handle dépend du fournisseur du service d’authentification.

Pour les appels sur le même ordinateur, RPC enregistre l’utilisateur avec les informations d’identification fournies et utilise le jeton résultant pour l’appel de méthode.

Pour NTLMSSP ou Kerberos, la structure est une structure SEC_WINNT_AUTH_IDENTITY ou SEC_WINNT_AUTH_IDENTITY_EX . Le client peut ignorer pAuthInfo après avoir appelé l’API. RPC ne conserve pas une copie du pointeur pAuthInfo et le client ne peut pas la récupérer ultérieurement dans la méthode CoQueryProxyBlanket .

Si ce paramètre a la valeur NULL, DCOM utilise l’identité proxy actuelle (qui est le jeton de processus ou le jeton d’emprunt d’identité). Si le handle fait référence à une structure, cette identité est utilisée.

Pour Schannel, ce paramètre doit être un pointeur vers une structure CERT_CONTEXT qui contient le certificat X.509 du client ou a la valeur NULL si le client souhaite établir une connexion anonyme au serveur. Si un certificat est spécifié, l’appelant ne doit pas le libérer tant qu’un proxy vers l’objet existe dans l’appartement actuel.

Pour Snego, ce membre est NULL, pointe vers une structure SEC_WINNT_AUTH_IDENTITY ou pointe vers une structure SEC_WINNT_AUTH_IDENTITY_EX . S’il est NULL, Snego sélectionne une liste de services d’authentification en fonction de ceux disponibles sur l’ordinateur client. S’il pointe vers une structure SEC_WINNT_AUTH_IDENTITY_EX , le membre PackageList de la structure doit pointer vers une chaîne contenant une liste séparée par des virgules de noms de service d’authentification et le membre PackageListLength doit indiquer le nombre d’octets dans la chaîne PackageList . Si PackageList a la valeur NULL, tous les appels utilisant Snego échouent.

Si COLE_DEFAULT_AUTHINFO est spécifié pour ce paramètre, DCOM sélectionne les informations d’authentification en suivant son algorithme de négociation de couverture de sécurité normal.

CoSetProxyBlanket échoue si pAuthInfo est défini et si l’un des indicateurs de masquage est défini dans le paramètre dwCapabilities .

[in] dwCapabilities

Fonctionnalités de ce proxy. Pour obtenir la liste des valeurs possibles, consultez l’énumération EOLE_AUTHENTICATION_CAPABILITIES . Les seuls indicateurs qui peuvent être définis via cette fonction sont EOAC_MUTUAL_AUTH, EOAC_STATIC_CLOAKING, EOAC_DYNAMIC_CLOAKING, EOAC_ANY_AUTHORITY (cet indicateur est déconseillé), EOAC_MAKE_FULLSIC et EOAC_DEFAULT. Vous pouvez définir EOAC_STATIC_CLOAKING ou EOAC_DYNAMIC_CLOAKING si pAuthInfo n’est pas défini et Schannel n’est pas le service d’authentification. (Pour plus d’informations, voir Cloaking .) Si des indicateurs de fonctionnalité autres que ceux mentionnés ici sont définis, CoSetProxyBlanket échoue.

Valeur retournée

Cette fonction peut retourner les valeurs suivantes.

Code de retour Description
S_OK
La fonction a réussi.
E_INVALIDARG
Un ou plusieurs arguments ne sont pas valides.

Remarques

CoSetProxyBlanket définit les informations d’authentification qui seront utilisées pour effectuer des appels sur le proxy spécifié. Cette fonction encapsule la séquence suivante d’appels courants (gestion des erreurs exclue).

    pProxy->QueryInterface(IID_IClientSecurity, (void**)&pcs);
    pcs->SetBlanket(pProxy, dwAuthnSvc, dwAuthzSvc, pServerPrincName, 
        dwAuthnLevel, dwImpLevel, pAuthInfo, dwCapabilities);
    pcs->Release();

Cette séquence appelle QueryInterface sur le proxy pour obtenir un pointeur vers IClientSecurity et, avec le pointeur résultant, appelle IClientSecurity ::SetBlanket , puis libère le pointeur.

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]
Plateforme cible Windows
En-tête combaseapi.h (inclure Objbase.h)
Bibliothèque Ole32.lib
DLL Ole32.dll

Voir aussi

CoQueryProxyBlanket

IClientSecurity ::SetBlanket

Sécurité dans COM

Définition de la sécurité au niveau du proxy d’interface