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