Pergunta

Existe alguma maneira de fornecer uma função de logout para um site que usa ASP clássico e que usa a autenticação do Windows (ou seja, as pastas restritas têm suas permissões definidas pelo sistema operacional do servidor, e os nomes de usuário/senhas são armazenados no Active Directory)?

Se fizer alguma diferença, o servidor estará executando o IIS 5.0. O logout precisa funcionar para o IE (6, 7 e 8) e o Firefox no mínimo.

Observe que este é um site antigo e bastante grande - muitas centenas de páginas ASP individuais - portanto, qualquer solução que envolvesse mudanças de páginas individuais simplesmente não funcionará. (Pelo mesmo motivo, bem como polidez básica, não sugira mudar para asp.net.)

O que encontrei até agora sugere que o envio de um código de resposta 401 poderia porque alguns navegadores limpam a autenticação, mas (1) não sei como fazer isso e (2) eu realmente prefiro algo que realmente funcione, em vez de apenas ter uma chance de trabalhar. Eu também sei que brincar com o objeto da sessão (.Abandon, por exemplo) seria completamente inútil, porque não é aí que a autenticação é feita.

Foi útil?

Solução

Seu uso do termo "logout" é confuso. Geralmente, é a reposibilidade dos sites para gerenciar logins/outs, e isso geralmente é feito usando o objeto de sessão, mas não é disso que você está falando.

Eu percebo duas coisas possíveis de que você pode estar falando.

Autenticação de conexão

Em primeiro lugar, o fato de que a autenticação do tipo feita pelo Windows Integrated Security é executada no nível de conexão. Uma vez que uma conexão tenha sido autenticada, essa conexão (que em HTTP/1.1 é por padrão mantida em estado aberto) pode ser usado sem mais necessidade dos apertos de mão de autenticações.

Pode ser possível convencer o cliente ou servidor a fechar a conexão, incluindo o Connection: close Cabeçalho na resposta, mas isso pode realmente não resultar na encerramento da conexão.

Além disso, um cliente pode ter 2 ou mais conexões autenticadas abertas por vez. Este caso, a abordagem acima fecharia apenas um deles.

A conclusão aqui é que há pouco que você pode fazer sobre conexões autenticadas no nível da sessão.

Cache de credenciais

IE irá cache as credenciais que um usuário insere para um logon de rede em um site específico durante a sessão do IE. Portanto, mesmo se você conseguiu fechar as conexões autenticadas existentes, o IE simplesmente reutiliza as credenciais em cache para concluir o aperto de mão de autenticação subsequente silenciosamente. Pode ser possível configurar o cliente para não fazer isso, mas duvido que seja algo que você possa usar.

Conclusão

A resposta para (pelo menos a pergunta que percebo que você está perguntando) é: não, você não pode.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top