Freigeben über


<legacyImpersonationPolicy>-Element

Gibt an, dass die Windows-Identität nicht über asynchrone Punkte verläuft, unabhängig von den Floweinstellungen für den Ausführungskontext im aktuellen Thread.

<configuration>
  <runtime>
    <legacyImpersonationPolicy>

Syntax

<legacyImpersonationPolicy
   enabled="true|false"/>  

Attribute und Elemente

In den folgenden Abschnitten werden Attribute sowie untergeordnete und übergeordnete Elemente beschrieben.

Attribute

attribute Beschreibung
enabled Erforderliches Attribut.

Gibt an, dass die WindowsIdentity nicht über asynchrone Punkte fließt, unabhängig von den Floweinstellungen für den ExecutionContext im aktuellen Thread.

Enabled-Attribut

Wert BESCHREIBUNG
false WindowsIdentity fließt über asynchrone Punkte, abhängig von den Floweinstellungen für den ExecutionContext im aktuellen Thread. Dies ist die Standardoption.
true WindowsIdentity fließt nicht über asynchrone Punkte, unabhängig von den Floweinstellungen für den ExecutionContext im aktuellen Thread.

Untergeordnete Elemente

Keine

Übergeordnete Elemente

Element BESCHREIBUNG
configuration Das Stammelement in jeder von den Common Language Runtime- und .NET Framework-Anwendungen verwendeten Konfigurationsdatei.
runtime Enthält Informationen über die Assemblybindung und die Garbage Collection.

Bemerkungen

In den .NET Framework-Versionen 1.0 und 1.1 fließt die WindowsIdentity über keine benutzerdefinierten asynchronen Punkte hinweg. Ab .NET Framework, Version 2.0, gibt es ein ExecutionContext-Objekt, das Informationen zum derzeit ausgeführten Thread enthält und ihn über asynchrone Punkte innerhalb einer Anwendungsdomäne fließen lässt. Die WindowsIdentity ist in diesem Ausführungskontext enthalten und fließt daher auch über die asynchronen Punkte, d. h., wenn ein Identitätswechselkontext vorhanden ist, fließt dieser ebenfalls.

Ab .NET Framework 2.0 können Sie das <legacyImpersonationPolicy>--Element verwenden, um anzugeben, dass WindowsIdentity nicht über asynchrone Punkte fließt.

Hinweis

Die Common Language Runtime (CLR) erkennt Identitätswechselvorgänge, die nur mit verwaltetem Code ausgeführt werden, erkennt aber keine Identitätswechsel, die außerhalb von verwaltetem Code ausgeführt werden, z. B. durch Plattformaufrufe von nicht verwaltetem Code oder durch direkte Aufrufe von Win32-Funktionen. Nur verwaltete WindowsIdentity-Objekte können über asynchrone Punkte fließen, es sei denn, das alwaysFlowImpersonationPolicy-Element wurde auf „true“ (<alwaysFlowImpersonationPolicy enabled="true"/>) festgelegt. Durch das Festlegen des alwaysFlowImpersonationPolicy-Elements auf „true“ wird angegeben, dass die Windows-Identität immer über asynchrone Punkte fließt, unabhängig davon, wie der Identitätswechsel durchgeführt wurde. Weitere Informationen zum Flow nicht verwalteter Identitätswechsel über asynchrone Punkte hinweg finden Sie unter <alwaysFlowImpersonationPolicy>-Element.

Sie können dieses Standardverhalten auf zwei andere Weisen ändern:

  1. In verwaltetem Code auf Threadbasis.

    Sie können den Flow pro Thread unterdrücken, indem Sie die Einstellungen ExecutionContext und SecurityContext mithilfe der Methode ExecutionContext.SuppressFlow, SecurityContext.SuppressFlowWindowsIdentity oder SecurityContext.SuppressFlow ändern.

  2. Im Aufruf der nicht verwalteten Hostingschnittstelle, um die Common Language Runtime (CLR) zu laden.

    Wenn eine nicht verwaltete Hostingschnittstelle (anstelle einer einfachen verwalteten ausführbaren Datei) zum Laden der CLR verwendet wird, können Sie ein spezielles Flag im Aufruf der CorBindToRuntimeEx-Funktion angeben. Um den Kompatibilitätsmodus für den gesamten Prozess zu aktivieren, legen Sie den Parameter flags für die CorBindToRuntimeEx-Funktion auf STARTUP_LEGACY_IMPERSONATION fest.

Weitere Informationen finden Sie unter <alwaysFlowImpersonationPolicy>-Element.

Konfigurationsdatei

In einer .NET Framework-Anwendung kann dieses Element nur in der Anwendungskonfigurationsdatei verwendet werden.

Für eine ASP.NET-Anwendung kann der Identitätswechselflow in der Datei „aspnet.config“ konfiguriert werden, die sich im Verzeichnis „<Windows-Ordner>\Microsoft.NET\Framework\vx.x.xxxx“ befindet.

ASP.NET deaktiviert standardmäßig den Identitätswechselflow in der „aspnet.config“-Datei mithilfe der folgenden Konfigurationseinstellungen:

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

Wenn Sie in ASP.NET den Identitätswechsel stattdessen zulassen möchten, müssen Sie explizit die folgenden Konfigurationseinstellungen verwenden:

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

Beispiel

Im folgenden Beispiel wird gezeigt, wie das Legacyverhalten angegeben wird, bei dem die Windows-Identität nicht über asynchrone Punkte hinweg fließt.

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

Siehe auch