Representando e Revertendo

Às vezes, talvez você precise obter um token de conta de Windows NT para representar uma conta do Windows. Por exemplo, seu aplicativo ASP.Aplicativo baseado em NET talvez seja necessário agir em nome de vários usuários em momentos diferentes. Seu aplicativo pode aceitar um token que representa um administrador de serviços de informações da Internet (IIS), representar o usuário, efetuar uma operação e reverter para a identidade anterior. Em seguida, ele pode aceitar um token do IIS que representa um usuário com menos direitos de executar alguma operação e reverter novamente.

Em situações onde o seu aplicativo deve representar uma conta do Windows não foi anexada ao segmento atual pelo IIS, você deve recuperar o token da conta e usá-lo para ativar a conta. Você pode fazer isso executando as seguintes tarefas:

  1. Recuperar um token de conta para um determinado usuário fazendo uma chamada para o não gerenciado LogonUser método. Este método não está em de.Biblioteca de classes base do NET Framework, mas está localizado no não gerenciado Advapi32. dll. Acesso aos métodos em código não gerenciado é uma operação avançada e está além do escopo desta discussão. Para obter mais informações, consulte Interoperating with Unmanaged Code. Para obter mais informações sobre o LogonUser método e Advapi32. dll, consulte a documentação do Platform SDK.

  2. Criar uma nova instância de WindowsIdentity classe, passando o token. O código a seguir demonstra essa chamada, onde hToken representa um token do Windows.

    WindowsIdentity ImpersonatedIdentity = new WindowsIdentity(hToken);
    
    Dim ImpersonatedIdentity As New WindowsIdentity(hToken)
    
  3. Começar a representação, criando uma nova instância da WindowsImpersonationContext classe e inicializá-lo com o WindowsIdentity.Impersonate método da classe inicializada, conforme mostrado no código a seguir.

    WindowsImpersonationContext MyImpersonation = ImpersonatedIdentity.Impersonate();
    
    WindowsImpersonationContext MyImpersonation = ImpersonatedIdentity.Impersonate()
    
  4. Quando você não precisa mais representar, chame o WindowsImpersonationContext.Undo método para reverter a representação, conforme mostrado no código a seguir.

    MyImpersonation.Undo();
    
    MyImpersonation.Undo()
    

Se confiáveis código já possui anexado um WindowsPrincipal o objeto para o segmento, você pode chamar o método de instância representar, que não terá um token de conta. Observe que isso é útil somente quando o WindowsPrincipal o objeto no thread representa um usuário diferente em que o processo está sendo executado. Por exemplo, você pode encontrar esta situação usando ASP.NET com a autenticação do Windows ativada e a representação desativada. Nesse caso, o processo é executado em uma conta configurada no Internet Information Services (IIS), enquanto o objeto atual representa o usuário do Windows que está acessando a página.

Observe que nem representar nem Desfazer alterações a Principal objeto associado com o contexto da chamada atual. Em vez disso, representação e alteração de reverter o símbolo associado ao processo de sistema operacional atual..

Consulte também

Referência

WindowsIdentity

WindowsImpersonationContext

Conceitos

Principal e objetos de identidade

ASP.NET Impersonation

Using IIS Authentication with ASP.NET Impersonation

Outros recursos

Interoperação com Código Não Gerenciado