Este artigo descreve representação e o contexto de segurança para páginas Active Server Pages (ASP). Ele fornece código de exemplo para uma biblioteca de vínculo dinâmico ActiveX do Microsoft Visual Basic (DLL) que pode ser instanciada em uma página ASP para representar um usuário e alterar o contexto de segurança do thread atual.
Por padrão, o ASP é executado no contexto de segurança do usuário representado. Quando é feita uma solicitação para um arquivo ASP, o servidor Web utiliza um segmento de trabalho e define o contexto de segurança do thread como um usuário representado. O método de autenticação de Internet Information Server (IIS) (anônimo, Basic, NT integrada e assim por diante) determina o usuário representado. Em seguida, o código ASP é executado no contexto de usuário.
Quando você representa um usuário, você pode resolver os seguintes conflitos segurança em seu aplicativo:
Um aplicativo que usa segurança integrada do NT (NTLM) ou Kerberos para autenticar que precise acessar um recurso de rede (como um arquivo, um banco de dados do Access ou um SQL Server) por meio do protocolo pipes nomeados.
Um aplicativo que acessa um recurso de rede do evento Session_OnEnd ou Application_OnEnd .
Os eventos Session_OnEnd e Application_OnEnd executam com a identidade do processo. Para aplicativos de proteção do aplicativo em processo ou baixa, isso é a identificação de usuário do sistema e o processo é o arquivo inetinfo.exe. Em vez de representação, você pode executar em um processo separado de memória ou com proteção de aplicativo alta (isolada) e definir a identidade do pacote do Microsoft Transaction Server (MTS) ou aplicativo COM + a identificação do usuário desejado.
Um aplicativo que oferece suporte a vários usuários que estão se conectando o WinNT: / / espaço para nome através do Microsoft Active Directory Services Interface (ADSI).
Essas conexões são armazenados em cache com as credenciais de segurança do primeiro usuário que abre a conexão. Representando garante que um único usuário abre a conexão; como resultado, credenciais do usuário coincidir com as credenciais em cache.
A função LogonUser recebe as informações de logon (ID de usuário, senha e assim por diante) e retorna o token de segurança para um logon válido.
A função ImpersonateLoggedOnUser recebe o token de segurança de LogonUser e o aplica ao thread atual.
A função RevertToSelf retorna o thread ao contexto de segurança do processo de origem.
RevertToSelf é extremamente importante quando você representar do ASP. Ele é chamado antes de LogonUser e ImpersonateLoggedOnUser para garantir que o contexto de segurança atual tenha a capacidade de representar. (Se você já está representada, que são do ASP, provavelmente você não tem a autoridade necessária para representar.) RevertToSelf é chamado no final do processamento da página para garantir que o próximo uso do thread tenha o contexto de segurança apropriadas, ou seja, a identidade do processo de origem.
A seguinte DLL ActiveX tem dois métodos: logon e Logoff . logon altera o contexto do thread para uma nova identificação de usuário e Logoff reverte para a identidade do processo de origem. Para criar a DLL, execute as seguintes etapas:
No Visual Basic 6.0, crie um novo projeto ActiveX DLL chamado LoginAdmin.
Altere o nome do módulo de classe inicial para ImpersonateUser.
Adicionar um módulo, denominado LogonAPIs.bas, para o projeto, e em seguida, colar o código a seguir para tornar a API chama disponível para sua classe:
Public Declare Function LogonUser Lib "advapi32.dll" _
Alias "LogonUserA" (ByVal lpszUsername As String, _
ByVal lpszDomain As String, ByVal lpszPassword As String, _
ByVal dwLogonType As Long, ByVal dwLogonProvider As Long, _
phToken As Long) As Long
Public Declare Function ImpersonateLoggedOnUser Lib "advapi32.dll" (ByVal hToken As Long) As Long
Public Declare Function RevertToSelf Lib "advapi32.dll" () As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Abra o módulo de classe ImpersonateUser e cole o código a seguir para criar os métodos de logon e Logoff :
Private Const LOGON32_LOGON_INTERACTIVE = 2
Private Const LOGON32_PROVIDER_DEFAULT = 0
Public Sub Logon(ByVal strAdminUser As String, ByVal _
strAdminPassword As String, ByVal strAdminDomain As String)
Dim lngTokenHandle, lngLogonType, lngLogonProvider As Long
Dim blnResult As Boolean
lngLogonType = LOGON32_LOGON_INTERACTIVE
lngLogonProvider = LOGON32_PROVIDER_DEFAULT
blnResult = RevertToSelf()
blnResult = LogonUser(strAdminUser, strAdminDomain, strAdminPassword, _
lngLogonType, lngLogonProvider, _
lngTokenHandle)
blnResult = ImpersonateLoggedOnUser(lngTokenHandle)
CloseHandle (lngTokenHandle)
End Sub
Public Sub Logoff()
Dim blnResult As Boolean
blnResult = RevertToSelf()
End Sub
Observação : A chamada para LogonUser passa um tipo de logon de LOGON32_LOGON_INTERACTIVE. A configuração logon interativo permite acessar recursos de rede que outros tipos de logon não.
Salve os arquivos de projeto.
No menu arquivo , clique em Criar LoginAdmin.dll para compilar a DLL ActiveX.
Copie LoginAdmin.dll para o servidor Web e, em seguida, use regsvr32.exe para registrá-lo (digite regsvr32.exe c:\components\LoginAdmin.dll em um prompt de comando).
Depois que a DLL ActiveX é registrada, você pode chamá-lo em uma página ASP da seguinte maneira:
<%
Option Explicit
Dim objLogon
Set objLogon = Server.CreateObject("LoginAdmin.ImpersonateUser")
objLogon.Logon "Userid", "Password", "Domain"
'Body of code for the page.
objLogon.Logoff
Set objLogon = Nothing
%>
Observação : quando você chamar RevertToSelf , a página ASP será executado no contexto de segurança do processo. Para aplicativos em processo, isso é a conta do sistema. No entanto, para aplicativos em pool ou isolados, isso é a identidade do COM + pacote que está configurado para aplicativos em pool ou para o próprio aplicativo isolado. <computername>Por padrão, a identidade desses pacotes COM + é definida como IWAM_ <nome-computador>. Se essa conta não tiver privilégios "Funcionar como parte do sistema operacional", a chamada subseqüente LogonUser falha devido a uma violação de permissões. <computername>Como uma solução, ou ativar "Funcionar como parte do sistema operacional" privilégios para IWAM_ <nome-computador> conta ou configurar a identidade do pacote COM + para ser executado em uma conta que tenha esses privilégios.
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 248187
(http://support.microsoft.com/kb/248187/en-us/
)
O que podemos fazer para melhorar essa informação?
Para proteger sua privacidade, não inclua informações de contato em seus comentários.
Obrigado! Seus comentários são usados para nos ajudar a aperfeiçoar o conteúdo de suporte. Para obter mais opções de ajuda, visite a Home Page de Ajuda e Suporte.