Autenticação da janela de salto duplo

4

Eu tenho um problema ao fazer com que a Autenticação do Windows (Kerberos) funcione ao passar as credenciais do usuário para o IIS, do IIS para o SQL. Eu configurei SPNs para SQL e configurei a conta do servidor IIS para permitir a delegação.

Se eu definir a conta de computador do IIS para permitir a delegação para qualquer serviço, ele funcionará:

Noentanto,seeuconfigurá-loparaserviçosespecíficos,ascredenciaisnãosãopassadasereceboumerrosobreaconexãocomousuárioanônimo:

Como você pode ver, estou me conectando à Instância do SQL Express e configurei um número de SPNs para tentar resolver isso, sem sorte com nenhum deles. Obviamente, o fato de funcionar ao permitir qualquer serviço, diz-me que algo está faltando nessa lista de serviços, mas não sei o quê!

    
por Sam Cogan 22.10.2010 / 17:41

3 respostas

5

Para qualquer outra pessoa que possa se deparar com esse problema, o problema era usar a autenticação do Kernal Mode, com uma conta de usuário de domínio para a conta do pool de aplicativos.

A autenticação no modo kernel faz a maior parte do trabalho para você em relação aos SPNs do IIS, no entanto, espera-se que você esteja usando a conta do sistema para a identidade do pool de aplicativos. Se você estiver usando uma conta de domínio, precisará configurar o SPN HTTP para esse usuário. Você precisará delegar o acesso ao SQL nessa conta de usuário, não na conta do IIS Machine, como faria normalmente com a autenticação do modo kernel.

    
por 17.03.2011 / 22:38
3

Eu tenho este trabalho no passado com o IIS6 e Windows 2003 e SQL 2005, mas já faz muito tempo que eu olhei para ele, mas no caso de ajudar aqui é o que eu posso descobrir:

No AD, o servidor web tem uma entrada para o servidor SQL definido como 'confiável apenas para serviços especificados', 'use qualquer protocolo de autenticação' e a entrada tem o nome do host do SQL, não o FQDN. O tipo de serviço é MSSQLSvc e a porta é 1433.

A conta de computador do SQL Server não é confiável para delegação.

Eu também lembro de ter que usar 'setspn' na linha de comando durante a configuração, e as configurações que eu tenho do 'setspn -L webserver' são:

HTTP/intranet.domain.example.org:80
HTTP/intranet:80
HOST/webserverhostname
HOST/webserverhostname.domain.example.org

Onde 'intranet' é um alias que usamos para o site e coloque seus FQDNs reais, e não os exemplo.org, por exemplo

setspn -A HTTP/intranet:80 webserver

e assim por diante.

Além disso, isso parece uma lista de verificação bem detalhada: link

    
por 22.10.2010 / 19:12
0

Descobri que, independentemente da configuração do servidor Web SPN, eu precisava criar um SPN para o SQL Server usando um registro HOST para o nome do SQL Server, em vez de um alias CNAME.

Ou seja, para cobrir todas as bases, adicionei os SPNs da seguinte forma;

setspn -A MSSQLSvc / sqlserverhostname.example.org SQLServerServiceAccountName

setspn -A MSSQLSvc / sqlserverhostname: 1433 SQLServerServiceAccountName

setspn -A MSSQLSvc / sqlserverhostname.example.org: 1433 SQLServerServiceAccountName

setspn -A MSSQLSvc / sqlserverhostname SQLServerServiceAccountName

.. garantindo que "sqlserverhostname" foi registrado no DNS como um registro HOST.

    
por 04.02.2015 / 17:33