Representando e reverter

Às vezes, talvez seja necessário obter um token de conta do Windows NT para representar uma conta do Windows.Por exemplo, seu aplicativo baseado em ASP.NET pode ter a agir em nome de vários usuários em momentos diferentes.Seu aplicativo pode aceitar um token que representa um administrador do Serviços de Informações da Internet (Serviços de Informações da Internet), representar o usuário, execute 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, realizar alguma operação e reverter novamente.

Em situações em que seu aplicativo deve representar uma conta do Windows que não foi anexada ao segmento corrente pelo IIS, recupere 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 telefonar à não-gerenciado LogonUser método.Esse método não está na biblioteca de classes base do .NET estrutura, 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 plataforma SDK.

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

    WindowsIdentity ImpersonatedIdentity = new WindowsIdentity(hToken);
    
    Dim ImpersonatedIdentity As New WindowsIdentity(hToken)
    
  3. Comece a representação, criando uma nova instância do WindowsImpersonationContext classe e inicializando-o 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 representar, telefonar o WindowsImpersonationContext.Undo método para reverter a representação, sistema autônomo mostra o código a seguir.

    MyImpersonation.Undo();
    
    MyImpersonation.Undo()
    

Se código confiável já tiver anexado um WindowsPrincipal objeto para o segmento, você pode chamar o método de instância Representar, que não levará um token de conta.Observação que isso é útil somente quando o WindowsPrincipal objeto no thread representa um usuário diferente em que o processo está sendo executado no momento.Por exemplo, você pode encontrar esta situação usando ASP.NET com autenticação do Windows ativada e representação desativada.Nesse caso, o processo está sendo executado sob uma conta configurada no Serviços de Informações da Internet (Serviços de Informações da Internet) enquanto o objeto corrente representa o usuário do Windows que está acessando a página.

Observe que nenhuma das Representar nor Desfazer o é alteradoentidade de segurança de segurança objeto associado com o contexto de telefonar corrente.Em vez disso, a representação e reverter alterar símbolo associado ao processo do sistema operacional corrente

Consulte também

Conceitos

entidade de segurança de segurança e objetos de identidade

ASP.NET Impersonation

Using IIS Authentication with ASP.NET Impersonation

Referência

WindowsIdentity

WindowsImpersonationContext

Outros recursos

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