Representação no IIS 7.0
-
08-06-2019 - |
Pergunta
Eu tenho um site que funciona corretamente no IIS 6.0:Ele autentica os usuários com credenciais do Windows e, ao conversar com o serviço que atinge o banco de dados, passa as credenciais.
No IIS 7.0, as mesmas configurações não passam as credenciais e o banco de dados é atingido por NT AUTHORITY\ANONYMOUS.
Tem algo que estou perdendo?Desativei o acesso ANÔNIMO em meu site do IIS 7.0, mas não consigo fazer funcionar.
Estas são as configurações que estou usando no IIS 6.0 e 7.0:
<authentication mode="Windows">
<identity impersonate="true">
O que mudou de 6.0 para 7.0?
Solução
Houve mudanças entre IIS7 e IIS6.0.Encontrei para você uma postagem no blog que pode realmente ajudá-lo (clique aqui para ver).
Você está executando seu aplicativo no Modo Integrado ou no Modo Clássico?Pelo que vi, colocar o atributo Impersonate como true deve exibir um erro 500 com a seguinte mensagem de erro:
Erro do Servidor Interno.Este é o erro HTTP 500.19:A página solicitada não pode ser acessada porque os dados de configuração relacionados para a página são inválidos.
Aqui está a solução alternativa proposta:
Gambiarra:
1) Se o seu aplicativo não depender de se passar pelo usuário solicitante nos estágios iniciantes e autenticaterequest (os únicos estágios em que a representação não é possível no modo integrado), ignore esse erro adicionando o seguinte ao web.config do seu aplicativo:
<validation validateIntegratedModeConfiguration="false"
/>
2) Se o seu aplicativo depender da representação no BeginRequest e Authenticaterequest, ou você não tiver certeza, vá para o modo clássico.
Eu esperava que isso fosse útil para entender como o IIS 7.0 funciona agora.
Outras dicas
O seu servidor IIS está configurado para ser confiável para delegação pelo SQLServer?Já me deparei com isso antes com o WebDAV, onde precisávamos que o servidor executando o IIS fosse confiável para o servidor de arquivos para autenticar em nome do servidor de arquivos.
Interessante...Eu tenho o problema oposto - Não ser capaz para fazer com que a autenticação seja passada do navegador do cliente, através do servidor web e para o banco de dados dentro de uma grande rede corporativa através de firewalls.
Também sinto que a autenticação "de ponta a ponta" no banco de dados é uma má ideia e um risco potencial à segurança.Não há nada que impeça o usuário final de carregar o SQL Query e se conectar diretamente ao seu banco de dados, então é melhor ter seu esquema bloqueado!
@Esteban - Esclarecido meu não é muito útil para ajudar você responder.
Normalmente, se você estiver fazendo autenticação de salto duplo como essa, o Kerberos normalmente estará envolvido, a menos que a primeira autenticação seja Básica.
Eu verificaria a autenticação nos servidores IIS 6 e garantiria que fosse a mesma no IIS 7.
Se a caixa do IIS 6 estiver definida como Windows Integrado, será necessário verificar as configurações do Kerberos - SPNs, Delegação etc.