SSO com problemas de Apache e Kerberos

3

Estou tentando configurar o SSO no meu servidor Apache usando o Kerberos, para que os usuários registrados no domínio local sejam reconhecidos e conectados imediatamente.

Eu segui orientar para a letra, mas não consigo me livrar do prompt de usuário / senha depois que tudo estiver configurado.

Estou usando o Ubuntu 8.04, instalei o mod_auth_kerb 5.4 para o Apache.

Meu /etc/krb5.conf:

[libdefaults]
  default_realm = COMPANY.LOCAL
[domain_realm]
  .company.local = COMPANY.LOCAL
  company.local = COMPANY.LOCAL
[realms]
  COMPANY.LOCAL = {
    default_domain = company.local
    kdc = DC01.COMPANY.LOCAL:88
    admin_server = DC01.COMPANY.LOCAL
  }

Minha configuração do Apache:

<Location />
AuthType Kerberos
AuthName "server login"
KrbMethodNegotiate On
KrbMethodK5Passwd On
KrbAuthRealms COMPANY.LOCAL
KrbServiceName HTTP
Krb5KeyTab /etc/apache2/httpd.keytab
KrbVerifyKDC off
KrbLocalUserMapping on
require valid-user
</Location>

O Keytab foi gerado pelo nosso administrador usando

ktpass -princ HTTP/[email protected] -mapuser hostname -crypto rc4-hmac-nt -ptype KRB5_NT_SRV_HST -pass CHOOSEPASSWORD -out httpd.keytab

Eu emiti os comandos chmod / chown relevantes. No servidor, eu emiti com sucesso kinit HTTP/[email protected] e efetuei login.

kvno / klist output:

# kvno HTTP/[email protected]
HTTP/[email protected]: kvno = 8
# klist -ke httpd.keytab
Keytab name: FILE:httpd.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   8 HTTP/[email protected] (ArcFour with HMAC/md5)

Eu configurei meu navegador (tentei ambos ff e ie no windows7) para passar as credenciais para esperançosamente me livrar do prompt, mas ele não está funcionando.

Os logs de erro do Apache estão dizendo:

[error] [client 10.0.0.1] gss_accept_sec_context() failed: Unspecified GSS failure.  Minor code may provide more information (, Key version number for principal in key table is incorrect)
[error] [client 10.0.0.1] gss_accept_sec_context() failed: Invalid token was supplied (, No error)

Alguém tem alguma sugestão sobre o que eu preciso para que isso funcione?

    
por tbh1 09.01.2013 / 18:08

1 resposta

1

Se eu estiver interpretando o erro corretamente, acho que significa que você tem uma versão antiga de uma chave em /etc/apache2/httpd.keytab. Toda vez que a chave é alterada para um principal do Kerberos via kadmin, o número da versão é incrementado e as versões mais antigas dessa chave são invalidadas.

O comando kinit / login mostra apenas que a chave do host dentro de /etc/krb5.keytab está intacta. Isso não significa necessariamente que o kvno dentro do httpd.keytab é válido e você precisará verificá-lo no KDC.

Inicie uma sessão kadmin no seu KDC e invoque getprinc <principalname> . Procure por "Key: vno", isso informa o que o KDC considera como o número da versão. Se o KDC tiver uma versão mais recente da chave, será necessário exportar novamente essa chave para o host em questão. Eu iria em frente e verificaria a validade de todas as chaves em /etc/krb5.keytab enquanto você está nisso apenas para ter certeza de que não há nenhuma outra bomba-relógio por perto.

Espero que isso ajude!

    
por 09.01.2013 / 22:34