Você precisa de KrbMethodNegotiate on
.
Sem isso, o cliente http está essencialmente fazendo o auth-basic para o apache e o apache está testando a senha no kdc.
Além disso, por segurança, você deve realmente definir KrbVerifyKDC on
.
Eu preciso da autenticação do conjunto de aplicativos Ruby on Rail via Active Directory usando a autenticação Kerberos.
Em /etc/krb5.conf eu adicionei a seguinte configuração
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = EU.ORG.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes
[realms]
EU.ORG.COM = {
kdc = eudc05.eu.org.com:88
admin_server = eudc05.eu.org.com:749
default_domain = eu.org.com
}
[domain_realm]
.eu.org.com = EU.ORG.COM
eu.org.com = EU.ORG.COM
[appdefaults]
pam = {
debug = true
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
Quando eu testo kinit validuser e digito a senha, a autenticação é bem-sucedida.
klist retorna :
Ticket cache: FILE:/tmp/krb5cc_600
Default principal: [email protected]
Valid starting Expires Service principal
02/08/13 13:46:40 02/08/13 23:46:47 krbtgt/[email protected]
renew until 02/09/13 13:46:40
Kerberos 4 ticket cache: /tmp/tkt600
klist: You have no tickets cached
Na configuração do aplicativo Apache, adicionei
IfModule mod_auth_kerb.c>
Location /winlogin>
AuthType Kerberos
AuthName "Kerberos Loginsss"
KrbMethodNegotiate off
KrbAuthoritative on
KrbVerifyKDC off
KrbAuthRealms EU.ORG.COM
Krb5Keytab /home/crmdata/httpd/apache.keytab
KrbSaveCredentials off
Require valid-user
</Location>
</IfModule>
Eu reiniciei o apache
Quando tento acessar o aplicativo a partir do Win7, recebi uma caixa de mensagem pop-up com texto:
Warning: This server is requesting that your username and password be sent in an insecure manner (basic authentification without a secure connection)
Quando insiro credenciais válidas, meu aplicativo é aberto com êxito e tudo funciona bem.
Tudo bem que para o usuário pop-ups tais janelas? Se eu usar a autenticação NTLM, não haverá tal pop-up. Eu verifiquei IE Internet Options e há 'Ativar autenticação integrada do Windows' está marcada.
Por que o IE tenta enviar nome de usuário e senha para o aplicativo apache? Se eu corrijo para entender, o próprio Windows deve fazer autenticação via Active Directory usando o protocolo Kerberos.
Quando tento acessar o aplicativo a partir do Win7 e insiro credenciais incorretas na caixa de mensagem pop-up
No log de erros do apache, vejo:
[error] [client 192.168.56.1] krb5_get_init_creds_password() failed: Client not found in Kerberos database
Mas agora não consigo obter a possibilidade de inserir credenciais válidas, somente quando eu reiniciar o IE eu posso obter novamente a caixa pop-up.
O que pode estar incorreto ou ausente na configuração do Kerberos?
Eu li em algum post do blog que provavelmente algo é necessário para ser feito no lado do Active Directory. O que exatamente?
Você precisa de KrbMethodNegotiate on
.
Sem isso, o cliente http está essencialmente fazendo o auth-basic para o apache e o apache está testando a senha no kdc.
Além disso, por segurança, você deve realmente definir KrbVerifyKDC on
.