Coluna Voz de Suporte ao Desenvolvedor do IIS

Autenticação kerberos e solução de problemas de delegação

Para personalizar esta coluna às suas necessidades, queremos convidá-lo a enviar suas ideias sobre tópicos que lhe interessam e problemas que você deseja ver abordados em artigos futuros da Base de Dados de Conhecimento e colunas de Voz de Suporte. Você pode enviar suas ideias e comentários usando o formulário Ask For It. Há também um link para o formulário na parte inferior desta coluna.

Meu nome é <Name> e estou com o grupo de Resolução de Problemas Críticos de Serviços de Informações da Internet da Microsoft (IIS) da Microsoft. Estou na Microsoft há nove anos e estou na equipe do IIS há nove anos. Compilei informações de vários locais emhttp://msdn.microsoft.com ehttp://www.microsoft.com sobre Kerberos e como solucionar problemas de delegação.

IIS 6.0

O white paper a seguir descreve como configurar a delegação no Microsoft Windows Server 2003. O white paper tem informações específicas para NLB (Balanceamento de Carga de Rede), mas inclui excelentes detalhes sobre como configurar um cenário delegado sem usar o NLB. Para ler esse documento, visite o seguinte site da Microsoft (em inglês):

http://technet.microsoft.com/en-us/library/cc757299.aspxObservação Use SPNs (Nomes de Entidade de Serviço HTTP) especialmente quando você usa NLB.Outro problema popular do Kerberos recentemente foi a necessidade de permitir que vários pools de aplicativos usem o mesmo nome DNS. Infelizmente, quando você usa Kerberos para delegar credenciais, não é possível associar o mesmo SPN (Nome da Entidade de Serviço) a diferentes pools de aplicativos. Você não pode fazer isso por causa do design de Kerberos. O protocolo Kerberos requer vários segredos compartilhados para que o protocolo funcione corretamente. Usando o mesmo SPN para diferentes pools de aplicativos, eliminamos um desses segredos compartilhados. O serviço de diretório do Active Directory não dará suporte a essa configuração do protocolo Kerberos devido ao problema de segurança.Configurar os SPNs dessa maneira faz com que a autenticação kerberos falhe. Uma possível solução alternativa para esse problema seria usar a transição de protocolo. A autenticação inicial entre o cliente e o IIS em execução do servidor seria tratada usando o protocolo de autenticação NTLM. Kerberos lidaria com a autenticação entre o IIS e o servidor de recursos de back-end.

Microsoft Internet Explorer 6 ou posterior

O navegador cliente pode ter problemas, como receber solicitações de logon repetidas para credenciais ou mensagens de erro "401 Access Negado" do servidor que executa o IIS. Encontramos os dois problemas a seguir que podem ajudar a resolve esses problemas:

  • Verifique se Habilitar a Autenticação Integrada do Windows está selecionado nas propriedades do navegador.  

  • Se a Configuração de Segurança Aprimorada Explorer internet estiver habilitada em Programas de Adição/Remoção, você deverá adicionar um site que use delegação à listade sites confiáveis. Para obter mais informações, clique no número abaixo para ler os artigos na Base de Dados de Conhecimento Microsoft:

    815141 A Configuração de Segurança Reforçada do Internet Explorer muda a experiência de navegação  

IIS 5.0 e IIS 6.0

Depois de atualizar do IIS 4.0 para o IIS 5.0 ou IIS 6.0, a delegação pode não funcionar corretamente, ou possivelmente alguém ou um aplicativo modificou a propriedade metabase NTAuthenticationProviders.  

Uma área específica de problemas pode ocorrer quando você define o SPN

Determinar o nome do servidor

Determine se você está se conectando ao site da Web usando o nome netbios real do servidor ou usando um nome de alias, como um nome DNS (por exemplo, www.microsoft.com). Se você estiver acessando o servidor Web usando um nome diferente do nome real do servidor, um novo SPN (Nome da Entidade de Serviço) deve ter sido registrado usando a ferramenta Setspn do Kit de Recursos do Servidor do Windows 2000. Como o serviço de diretório do Active Directory não sabe esse nome de serviço, o TGS (serviço de concessão de tíquetes) não oferece um tíquete para autenticar o usuário. Esse comportamento força o cliente a usar o próximo método de autenticação disponível, que é o NTLM, para renegociar. Se o servidor Web estiver respondendo a um nome DNS de www.microsoft.com mas o servidor tiver o nome webserver1.development.microsoft.com, você deverá registrar www.microsoft.com no Active Directory no servidor que está executando o IIS. Para fazer isso, você deve baixar a ferramenta Setspn e instalá-la no servidor que está executando o IIS.Para determinar se você está se conectando usando o nome real, tente se conectar ao servidor usando o nome real do servidor em vez do nome DNS. Se você não puder se conectar ao servidor, consulte a seção "Verificar se o computador é confiável para delegação".Se você puder se conectar ao servidor, siga estas etapas para definir um SPN para o nome DNS que você está usando para se conectar ao servidor:

  1. Instale a ferramenta Setspn.

  2. No servidor que executa o IIS, abra um prompt de comando e abra a pasta C:\Arquivos do Programa\Kit de Recursos.

  3. Execute o seguinte comando para adicionar este novo SPN (www.microsoft.com) ao Active Directory para o servidor:

    Setspn -A HTTP/www.microsoft.com webserver1Observação Neste comando, o Webserver1 representa o nome NetBIOS do servidor.

Você recebe uma saída semelhante à seguinte: Registrar ServicePrincipalNames para CN=webserver1,OU=Controladores de Domínio,DC=microsoft,DC=com HTTP/www.microsoft.com Objeto atualizado Para exibir uma listagem de SPNs no servidor para ver esse novo valor, digite o seguinte comando no servidor que executa o IIS:

Setspn -L webservername Observe que você não precisa registrar todos os serviços. Muitos tipos de serviço, como HTTP, W3SVC, WWW, RPC, CIFS (acesso ao arquivo), WINS e UPS (fonte de alimentação ininterrupta), serão mapeados para um tipo de serviço padrão chamado HOST. Por exemplo, se o software cliente usar um SPN de HTTP/webserver1.microsoft.com para criar uma conexão HTTP com o servidor Web no servidor webserver1.microsoft.com, mas esse SPN não estiver registrado no servidor, o controlador de domínio do Windows 2000 mapeará automaticamente a conexão com HOST/webserver1.microsoft.com. Esse mapeamento só se aplica se o serviço Web estiver em execução na conta do Sistema local.

Verifique se o computador é confiável para delegação

Se esse servidor que executa o IIS for um membro do domínio, mas não for um controlador de domínio, o computador deverá ser confiável para que a delegação do Kerberos funcione corretamente. Para fazer isso, siga estas etapas:

  1. No controlador de domínio, clique em Iniciar, aponte para Configurações e clique em Painel de Controle.

  2. Em Painel de Controle, abra Ferramentas Administrativas.

  3. Clique duas vezes em Usuários e computadores do Active Directory.

  4. Em seu domínio, clique em Computadores.

  5. Na lista, localize o servidor que está executando o IIS, clique com o botão direito do mouse no nome do servidor e clique em Propriedades.

  6. Clique na guia Geral, clique para selecionar a caixaConfiável para delegação marcar e clique emOK.

Observe que, se vários sites da Web forem atingidos pela mesma URL, mas em portas diferentes, a delegação não funcionará. Para que isso funcione, você deve usar nomes de host diferentes e SPNs diferentes. Quando a Internet Explorer solicita http://www.mywebsite.com ou http://www.mywebsite.com:81, Internet Explorer solicita um tíquete para SPN HTTP/www.mywebsite.com. O Explorer da Internet não adiciona a porta ou o vdir à solicitação SPN. Esse comportamento é o mesmo para http://www.mywebsite.com/app1 ou http://www.mywebsite.com/app2. Nesse cenário, o Explorer da Internet solicitará um tíquete para http://www do SPN.mywebsite.com do Centro de Distribuição de Chaves (KDC). Cada SPN só pode ser declarado para uma identidade. Portanto, você também receberá uma mensagem de erro KRB_DUPLICATE_SPN se tentar declarar esse SPN para cada identidade.

Delegação e Microsoft ASP.NET

Para obter mais informações sobre a configuração para delegar credenciais ao usar um aplicativo ASP.NET, clique no número do artigo a seguir para exibir o artigo na Base de Dados de Conhecimento da Microsoft:

810572 Como configurar um aplicativo ASP.NET para um cenário de delegação Representação e delegação são dois métodos para um servidor se autenticar em nome do cliente. Decidir qual desses métodos usar e sua implementação pode causar alguma confusão. Você deve examinar a diferença entre esses dois métodos e examinar quais desses métodos você pode querer usar para seu aplicativo. Minha recomendação seria ler o seguinte white paper para obter mais detalhes:

http://msdn2.microsoft.com/en-us/library/ms998351.aspx

Referências

http://technet.microsoft.com/en-us/library/cc757299.aspxhttp://msdn.microsoft.com/msdnmag/issues/05/09/SecurityBriefs/default.aspx

262177 Como habilitar o registro em log de eventos kerberos

Solucionar problemas de falhas do Kerberos no Explorer da Internet

Como sempre, sinta-se à vontade para enviar ideias sobre tópicos que você deseja abordar em colunas futuras ou na Base de Dados de Conhecimento usando o formulário Ask For It.

Precisa de mais ajuda?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.

As comunidades ajudam você a fazer e responder perguntas, fazer comentários e ouvir especialistas com conhecimento avançado.