Esta configuração do Kerberos / AD é possível?

10

Temos uma configuração do IDAM um pouco complicada:

insira a descrição da imagem aqui

Ou seja, a máquina e o navegador do usuário final ficam em uma rede com o AD pai, e nosso aplicativo baseado em Jetty e o AD com o qual ele pode conversar (AD local) ficam no outro.

Há uma confiança bidirecional entre os dois ADs. O navegador na rede pai possui o domínio local em sites confiáveis.

A configuração do servidor Jetty é a seguinte:

  • ele usa um arquivo keytab gerado em relação a um principal no AD local
  • está sendo executado como um serviço do Windows em um usuário definido no AD local
  • o domínio, o mapeamento de domínio de domínio e o kdc são definidos no domínio do AD local
  • ele usa spnego - isInitiator está definido como false; doNotPrompt é true; storeKey é verdadeiro

O problema é:

  • como teste, acessar o servidor a partir de um navegador dentro da rede local (por exemplo, vinculado ao AD local) funciona - as informações de depuração do Kerberos aparecem nos logs, posso ver a negociação correta do Kerberos no tráfego HTTP e o usuário é conectado automaticamente . Brilhante.
  • no entanto , acessar o servidor a partir de um navegador dentro da rede pai (que é como nossos usuários farão as coisas) não funciona! O navegador recupera um 401 unuth, mas solicita credenciais, que, quando inseridas, exibem uma tela em branco. Em seguida, clicar na barra de endereço e pressionar Enter faz uma das duas coisas, dependendo se as credenciais são para o AD remoto ou local:

    • credenciais locais do AD, em seguida, efetuem login corretamente, com o Kerberos do zero nos logs (solicitação GET, resposta sem resposta 401, solicitação de cabeçalhos Kerberos etc.)
    • credenciais AD remotos não faça o login (request GET, 401 resposta unauth, o que parece ser um cabeçalho NTLM: Authorization: Negotiate <60 or so random chars>)

De qualquer maneira, o fato de que isso está acontecendo está errado!

Existe uma explicação para esses sintomas? A configuração que temos pode fazer o que queremos?

Em termos da descrição acima, pode estar errado: qualquer configuração que eu mencionei em relação ao servidor Jetty deve ser precisa, como fiz. Estou feliz em fornecer mais detalhes. Qualquer configuração referente ao AD ou ao navegador da rede pai é potencialmente suspeita, porque não está sob meu controle e eu tive a configuração relatada para mim em vez de ver por mim mesma.

Robert Grant
fonte
o TCP / 88 está aberto entre o navegador e os servidores listados nos resultados do DNS para _kerberos._tcp.OurITOrgDomain e _kerberos._tcp.partentdomain? você pode sair do 'navegador' da máquina com as credenciais que precisa para se autenticar no servidor Jetty?
Jacob Evans
roguelynn.com/words/explain-like-im-5-kerberos pode lançar alguma luz de como seu firewall pode estar a causar problemas de (mais uma vez, 88 a ambas as DCs de seu cliente)
Jacob Evans
Existem muitas variáveis ​​para uma explicação detalhada passo a passo sem fazer uma captura de rede. Em seguida, você verá rapidamente se os SPNs estão configurados corretamente ou se o navegador precisa ser configurado para autenticação silenciosa.
user2320464

Respostas:

3

Sem ver a captura de pacote, acho que o SPN HTTP / www.website.com precisa estar registrado na conta que está executando o aplicativo. A equipe dos Serviços de Diretório da Microsoft possui uma excelente publicação com várias partes abordando este tópico no seguinte URL.

https://blogs.technet.microsoft.com/askds/2008/05/29/kerberos-authentication-problems-service-principal-name-spn-issues-part-1/

Execute uma captura de pacote (netmon, wireshark) de um cliente em cada ambiente para identificar qual SPN está sendo procurado. Depois de determinado, use o setspn cmd para registrá-lo na conta que está executando o aplicativo.

FWIW, o Kerberos funciona apenas na LAN. Se alguém precisar acessar onde os controladores de domínio não estiverem acessíveis, convém considerar um SSO como Shibboleth ou ADFS.

EDIT: como mencionado por @ alex-h , os navegadores precisarão ser configurados para autenticação silenciosa via Kerberos.

  • Internet Explorer - embora o artigo TechNet não seja especificamente para o seu aplicativo, as etapas são as mesmas.
  • Firefox - igual ao link do IE, correspondência não exata, mas as etapas são as mesmas.

Por fim, esse é um problema comum nas implantações do Microsoft Sharepoint. Eles querem que o SSO via Kerberos ocorra silenciosamente depois que os usuários forem autenticados no domínio. Portanto, se as respostas acima não resolverem o seu problema, tente verificar os fóruns deles, como os seguintes:

Kerberos no Chrome, Safari ou FireFox

user2320464
fonte
Uma boa resposta, melhor que a minha!
Alex H #
Obrigado a vocês dois - levarei alguns dias para ler os documentos vinculados, mas não abandonei a pergunta nem nada!
Robert Grant
Uh, na verdade não foi isso, mas acho que provavelmente é melhor aceitar essa resposta, pois o verdadeiro é um caso muito incomum que adicionarei como resposta separada. Muito obrigado!
Robert Grant