Configuração de problemas Logon único usando a autenticação Kerberos

1

Eu preciso da autenticação do conjunto de aplicativos Ruby on Rail via Active Directory usando a autenticação Kerberos.

Algumas informações técnicas:

  1. estou usando o Apache
  2. instalado mod_auth_kerb
  3. No link , adicionei LoadModule auth_kerb_module modules / mod_auth_kerb.so
  4. 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
     }
    
  5. Quando eu testo kinit validuser e digito a senha, a autenticação é bem-sucedida.

  6. 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
    
  7. 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>
    
  8. Eu reiniciei o apache

Agora, alguns testes:

  1. 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)
    
  2. Quando insiro credenciais válidas, meu aplicativo é aberto com êxito e tudo funciona bem.

Perguntas:

  1. 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.

  2. 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.

  3. Quando tento acessar o aplicativo a partir do Win7 e insiro credenciais incorretas na caixa de mensagem pop-up

    • A aplicação diz que a autenticação falhou (está tudo bem)
    • 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?

    
por user1124133 13.02.2013 / 20:43

1 resposta

1

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 .

    
por 14.02.2013 / 03:39