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:
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.
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)
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()
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
Using IIS Authentication with ASP.NET Impersonation