<alwaysFlowImpersonationPolicy>, élément

Spécifie que l’identité Windows est toujours transmise entre des points asynchrones, indépendamment du mode d’emprunt d’identité.

<configuration>
  <runtime>
    <alwaysFlowImpersonationPolicy>

Syntaxe

<alwaysFlowImpersonationPolicy
  enabled="true|false"/>  

Attributs et éléments

Les sections suivantes décrivent des attributs, des éléments enfants et des éléments parents.

Attributs

Attribut Description
enabled Attribut requis.

Indique si l’identité Windows circule entre les points asynchrones.

Attribut enabled

Valeur Description
false L’identité Windows ne circule pas entre les points asynchrones, sauf si l’emprunt d’identité est effectué via des méthodes managées comme Impersonate. Il s’agit de la valeur par défaut.
true L’identité Windows circule toujours entre les points asynchrones, indépendamment du mode d’emprunt d’identité utilisé.

Éléments enfants

Aucune.

Éléments parents

Élément Description
configuration Élément racine de chaque fichier de configuration utilisé par le Common Language Runtime et les applications .NET Framework.
runtime Contient des informations sur les liaisons d’assembly et l’opération garbage collection.

Notes

Dans .NET Framework versions 1.0 et 1.1, l’identité Windows ne circule pas entre les points asynchrones. Dans .NET Framework version 2.0, il existe un objet ExecutionContext qui contient des informations sur le thread en cours d’exécution, et les fait circuler entre les points asynchrones au sein d’un domaine d’application. L’objet WindowsIdentity est également transmis en même temps que les informations qui circulent entre les points asynchrones, à condition que l’emprunt d’identité ait été obtenu à l’aide de méthodes managées telles que Impersonate et non par d’autres moyens comme un appel de plateforme à des méthodes natives. Cet élément permet de spécifier que l’identité Windows circule bel et bien entre les points asynchrones, quelle que soit la façon dont l’emprunt d’identité a été obtenu.

Vous pouvez modifier ce comportement par défaut de deux autres façons :

  1. Dans du code managé par thread.

    Vous pouvez supprimer le flux par thread en modifiant les paramètres ExecutionContext et SecurityContext à l’aide de la méthode ExecutionContext.SuppressFlow, SecurityContext.SuppressFlowWindowsIdentity ou SecurityContext.SuppressFlow.

  2. Dans l’appel à l’interface d’hébergement non managée pour charger le Common Language Runtime (CLR).

    Si une interface d’hébergement non managée (plutôt qu’un simple exécutable managé) est utilisée pour charger le CLR, vous pouvez spécifier un indicateur spécial dans l’appel à la fonction CorBindToRuntimeEx. Pour activer le mode de compatibilité pour l’ensemble du processus, définissez le paramètre flags de la fonction CorBindToRuntimeEx sur STARTUP_ALWAYSFLOW_IMPERSONATION.

Fichier de configuration

Dans une application .NET Framework, cet élément peut être utilisé uniquement dans le fichier de configuration de l’application.

Pour une application ASP.NET, le flux d’emprunt d’identité peut être configuré dans le fichier aspnet.config qui se trouve dans le répertoire <Dossier Windows>\Microsoft.NET\Framework\vx.x.xxxx.

Par défaut, ASP.NET désactive le flux d’emprunt d’identité dans le fichier aspnet.config à l’aide des paramètres de configuration suivants :

<configuration>  
   <runtime>  
      <legacyImpersonationPolicy enabled="true"/>  
      <alwaysFlowImpersonationPolicy enabled="false"/>  
   </runtime>  
</configuration>  

Si vous voulez autoriser le flux d’emprunt d’identité Dans ASP.NET, vous devez utiliser explicitement les paramètres de configuration suivants :

<configuration>  
   <runtime>  
      <legacyImpersonationPolicy enabled="false"/>  
      <alwaysFlowImpersonationPolicy enabled="true"/>  
   </runtime>  
</configuration>  

Exemple

L’exemple suivant montre comment spécifier que l’identité Windows circule entre les points asynchrones, même quand l’emprunt d’identité est obtenu par d’autres moyens que des méthodes managées.

<configuration>  
  <runtime>  
    <alwaysFlowImpersonationPolicy enabled="true"/>  
  </runtime>  
</configuration>  

Voir aussi