Autenticação do Windows para um servidor remoto em um ambiente de intranet

4

Eu tenho vários servidores (todos no mesmo DC) em um ambiente de Intranet na minha empresa. Para simplificar, farei a minha pergunta no IIS e nos SQL Servers. Eu tenho um servidor web IIS 7.5 e um SQL Server 2005 remoto em outra máquina no domínio.

Aqui estão os meus requisitos para o que espero realizar:

  • Os aplicativos da Web no servidor IIS devem usar alguma forma de autenticação (presumivelmente a Autenticação do Windows), de modo que o usuário não precise autenticar, pois usará as credenciais de usuário da rede quando estiverem conectados às máquinas Windows.
  • O método de autenticação deve ser idealmente suportado por uma conexão VPN na rede também.
  • A identidade do usuário (Principal) deve ser passada para o SQL Server remoto, de modo que uma consulta nesse servidor possa identificar o usuário para dar suporte às autorizações com base em seu nome de usuário. por exemplo. a consulta select suser_sname() deve retornar o nome de usuário real da pessoa que está executando ações para o banco de dados por meio do aplicativo da Web do IIS.
  • A solução deve funcionar, pelo menos, com os caminhos do SQL Server e do UNC na rede.
  • Prova altamente confiável e futura (ou seja, melhores práticas).

Eu passei pelo menos duas semanas (cumulativamente) pesquisando isso nos últimos anos, como eu tive tempo, mas sem sucesso. Por favor, ajude-me a entender primeiro, se é possível atender a esses requisitos (como estou razoavelmente certo de que seja), aponte-me na direção correta sobre "COMO" para realizar isso e quais limitações devo considerar com essa solução.

O que eu fiz até agora:

  • Eu tenho um aplicativo de teste que está relatando o Kerberos como o AuthenticationType usando o Windows Auth ativado exclusivamente.
  • O Windows Auth está configurado para usar "Negociar" como o provedor e também requer a Proteção Estendida com o Modo Kernel ativado.
  • O pool de aplicativos usa o .NET 4.0 no modo integrado.
  • A Identidade do pool de aplicativos é uma conta de domínio personalizada que registramos como o SPN.
  • O servidor IIS tem a Delegação ativada no AD, mas o SQL Server não.

O melhor que consegui realizar foi confirmar a presença do cabeçalho http do Kerberos, mas meu aplicativo de teste revela que o usuário personalizado do Pool de Aplicativos (a conta do SPN) está sendo transmitido em vez do meu. Aqui estão os resultados do meu aplicativo de teste também se você quiser:

Result             Field Description              Test App Code
------             -----------------              -------------
Negotiate          Page Authentication Type       Page.User.Identity.AuthenticationType
<dc>\<username>    Page Identity                  Page.User.Identity.Name
Kerberos           Principal Windows Auth Type    WindowsIdentity.GetCurrent().AuthenticationType
<dc>\<spnUser>     Principal Windows Identity     WindowsIdentity.GetCurrent().Name
<dc>\<username>    HttpContext User               HttpContext.Current.User.Identity.Name
<dc>\<username>    Server Var "LOGON_USER"        Request.ServerVariables("LOGON_USER")
<dc>\<username>    Thread Current Principal       Threading.Thread.CurrentPrincipal.Identity.Name
    
por Chiramisu 06.06.2015 / 02:18

0 respostas