<legacyImpersonationPolicy> 요소

현재 스레드의 실행 컨텍스트 흐름 설정과 관계없이 Windows ID가 비동기 지점 간을 흐르지 않도록 지정합니다.

<configuration>
  <runtime>
    <legacyImpersonationPolicy>

구문

<legacyImpersonationPolicy
   enabled="true|false"/>  

특성 및 요소

다음 섹션에서는 특성, 자식 요소 및 부모 요소에 대해 설명합니다.

특성

특성 설명
enabled 필수 특성입니다.

현재 스레드의 ExecutionContext 흐름 설정에 관계없이 WindowsIdentity가 비동기 지점 간에 흐르지 않도록 지정합니다.

enabled 특성

Description
false WindowsIdentity는 현재 스레드의 ExecutionContext 흐름 설정에 따라 비동기 지점 간에 흐릅니다. 기본값입니다.
true WindowsIdentity는 현재 스레드의 ExecutionContext 흐름 설정에 관계없이 비동기 지점 간에 흐르지 않습니다.

자식 요소

없음

부모 요소

요소 Description
configuration 공용 언어 런타임 및 .NET Framework 애플리케이션에서 사용하는 모든 구성 파일의 루트 요소입니다.
runtime 어셈블리 바인딩 및 가비지 컬렉션에 대한 정보를 포함합니다.

설명

.NET Framework 버전 1.0 및 1.1에서 WindowsIdentity는 사용자 정의 비동기 지점 간에 흐르지 않습니다. .NET Framework 버전 2.0부터 현재 실행 중인 스레드에 대한 정보를 포함하는 ExecutionContext 개체가 있으며 애플리케이션 도메인 내의 비동기 지점 간에 흐릅니다. WindowsIdentity는 이 실행 컨텍스트에 포함되어 있으므로 비동기 지점 간에도 흐릅니다. 즉, 가장 컨텍스트가 있는 경우에도 흐릅니다.

.NET Framework 2.0부터 <legacyImpersonationPolicy> 요소를 사용하여 WindowsIdentity가 비동기 지점 간에 흐르지 않도록 지정할 수 있습니다.

참고

CLR(공용 언어 런타임)은 비관리 코드에 대한 플랫폼 호출이나 Win32 함수에 대한 직접 호출과 같이 관리 코드 외부에서 수행되는 가장 작업이 아니라 관리 코드만 사용하여 수행되는 가장 작업을 인식합니다. alwaysFlowImpersonationPolicy 요소가 true(<alwaysFlowImpersonationPolicy enabled="true"/>)로 설정되지 않은 경우 관리되는 WindowsIdentity 개체만 비동기 지점 간에 흐를 수 있습니다. alwaysFlowImpersonationPolicy 요소를 true로 설정하면 가장을 수행하는 방법과 관계없이 Windows ID가 항상 비동기 지점 간에 흐르도록 지정합니다. 관리되지 않는 가장의 비동기 지점 간 흐름에 대한 자세한 내용은 <alwaysFlowImpersonationPolicy> 요소를 참조하세요.

두 가지 다른 방법으로 이 기본 동작을 변경할 수 있습니다.

  1. 스레드를 기반으로 하는 관리 코드에서.

    ExecutionContext.SuppressFlow, SecurityContext.SuppressFlowWindowsIdentity 또는 SecurityContext.SuppressFlow 메서드를 사용하여 ExecutionContextSecurityContext 설정을 수정하여 스레드 기반의 흐름을 억제할 수 있습니다.

  2. 관리되지 않는 호스팅 인터페이스에 대한 호출에서 CLR(공용 언어 런타임)을 로드합니다.

    관리되지 않는 호스팅 인터페이스(단순한 관리되는 실행 파일 대신)를 사용하여 CLR을 로드하는 경우 CorBindToRuntimeEx 함수 함수에 대한 호출에서 특수 플래그를 지정할 수 있습니다. 전체 프로세스에 대해 호환 모드를 사용하려면 CorBindToRuntimeEx 함수에 대한 flags 매개 변수를 STARTUP_LEGACY_IMPERSONATION으로 설정합니다.

자세한 내용은 <alwaysFlowImpersonationPolicy> 요소를 참조하세요.

구성 파일

.NET Framework 애플리케이션에서 이 요소는 애플리케이션 구성 파일에서만 사용할 수 있습니다.

ASP.NET 애플리케이션의 경우 <Windows 폴더>\Microsoft.NET\Framework\vx.x.xxxx 디렉터리에 있는 aspnet.config 파일에서 가장 흐름을 구성할 수 있습니다.

ASP.NET은 기본적으로 다음 구성 설정을 사용하여 aspnet.config 파일에서 가장 흐름을 사용하지 않도록 설정합니다.

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

ASP.NET에서 대신 가장 흐름을 허용하려면 다음 구성 설정을 명시적으로 사용해야 합니다.

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

예제

다음 예에서는 Windows ID가 비동기 지점 간에 흐르지 않는 레거시 동작을 지정하는 방법을 보여 줍니다.

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

참고 항목