O SSO do Apache e do Kerberos com vários vhosts e vários SPNs

0

Gostaria de fazer logon único em um site na minha caixa do Windows. Eu estou usando o módulo de autenticação Kerberos do apache. Isso está funcionando muito bem quando se tem apenas um site.

Esta é a configuração atual:

arquivo .htaccess:

RewriteEngine On
AuthType Kerberos
AuthName "Login"
KrbAuthRealms MY.DOMAIN.NAME
KrbServiceName HTTP/[email protected]
Krb5Keytab /etc/mykeytab.keytab
KrbMethodK5Passwd on
KrbAuthoritative on
KrbMethodNegotiate on
Require valid-user

Para fazer isso funcionar, precisei criar um arquivo keytab no meu Controlador do Active Directory usando o seguinte comando:

ktpass -out c:\temp\mykeytab.keytab
    -princ HTTP/[email protected]
    -mapUser user1
    -mapOp set 
    -pass secret
    -crypto AES256-SHA1 
    -pType KRB5_NT_PRINCIPAL

Como dito, até este ponto tudo está funcionando muito bem. Agora, para a parte complicada:

Eu gostaria de ter um segundo web site (vhost) na mesma máquina física que está usando o mesmo usuário do Active Directory (user1). Eu não me importo se eu precisar usar um nome diferente do Service Principal (SPN) ou se eu posso usar o mesmo que antes.

O novo site é nomeado:

sub2.domain.com

e o arquivo .htaccess é

arquivo .htaccess:

RewriteEngine On
AuthType Kerberos
AuthName "Login"
KrbAuthRealms MY.DOMAIN.NAME
KrbServiceName HTTP/[email protected]
Krb5Keytab /etc/mykeytab2.keytab
KrbMethodK5Passwd on
KrbAuthoritative on
KrbMethodNegotiate on
Require valid-user

Eu também criei um novo arquivo keytab assim:

ktpass -out c:\temp\mykeytab2.keytab
    -princ HTTP/[email protected]
    -mapUser user1
    -mapOp add 
    -pass secret
    -crypto AES256-SHA1 
    -pType KRB5_NT_PRINCIPAL
    -in c:\temp\mykeytab1.keytab

Este arquivo keytab agora contém os dois SPNs mapeados para user1.

Ao abrir os dois sites, somente o sub1 ainda está funcionando, o sub2 está fornecendo um prompt de login, ou seja, o SSO não funciona com o sub2.

Infelizmente, os arquivos de log do apache2 não contêm nenhuma informação relacionada, embora eu usei LogLevel debug .

Nesse ínterim, descobri que um dos meus problemas é o número da versão da chave (kvno), que é diferente em ambos os keytabs e também no arquivo keytab mesclado. (Ambas as entradas mantêm seu kvno original com o antigo ficando inválido assim que o mais novo estiver ativo ...) Existe uma maneira de ter o mesmo kvno em ambos os keytabs (ou em ambas as entradas do keytab combinado?). Btw, a mensagem de log de erro correspondente é:

[auth_kerb:error] [pid 8222] [client 10.10.10.10:59840] gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, Key version number for principal in key table is incorrect)

Alguém sabe por que o sub2 não está funcionando corretamente e o sub1 funciona? ... e o que posso fazer para ter o mesmo kvnos?

Melhor TomS

    
por TomS 03.11.2017 / 12:31

1 resposta

0

O seu KVNO (número da versão da chave) não parece estar correto. Se você usar o AD, você pode gerar um keytab com o KVNO 255 (o AD não usa o KVNO). Você pode ativar a depuração conforme descrito aqui: Solução de problemas do Kerberos e se você postar o conteúdo do arquivo de rastreio, poderei saber mais.

    
por 29.11.2017 / 00:21