apache usando mod_auth_kerb sempre pede a senha duas vezes

apache usando mod_auth_kerb sempre pede a senha duas vezes

(Aperto Debian)

Estou tentando configurar o Apache para usar a autenticação Kerberos para permitir que usuários do AD façam login. Está funcionando, mas solicita duas vezes ao usuário um nome de usuário e uma senha, sendo a primeira vez ignorada (não importa o que esteja inserido). ) Apenas o segundo prompt inclui a string AuthName da configuração (ou seja: a primeira janela é um nome de usuário/senha genérico, a segunda inclui o título "Login Kerberos") Não estou preocupado com o funcionamento da autenticação integrada do Windows neste estágio, Eu só quero que os usuários possam fazer login com suas contas do AD, para que não precisemos configurar um segundo repositório de contas de usuários.

Como faço para corrigir isso para eliminar o primeiro prompt inútil?

As diretivas no arquivo apache2.conf:

<Directory /var/www/kerberos>
AuthType Kerberos
AuthName "Kerberos Login"
KrbMethodNegotiate On
KrbMethodK5Passwd On
KrbAuthRealms ONEVUE.COM.AU.LOCAL
Krb5KeyTab /etc/krb5.keytab
KrbServiceName HTTP/[email protected]
require valid-user
</Directory>

krb5.conf:

[libdefaults]
    default_realm = ONEVUE.COM.AU.LOCAL
[realms]
    ONEVUE.COM.AU.LOCAL = {
        kdc = SYD01PWDC01.ONEVUE.COM.AU.LOCAL
        master_kdc = SYD01PWDC01.ONEVUE.COM.AU.LOCAL
        admin_server = SYD01PWDC01.ONEVUE.COM.AU.LOCAL
        default_domain = ONEVUE.COM.AU.LOCAL
    }
[login]
    krb4_convert = true
    krb4_get_tickets = false

O log de acesso ao acessar o diretório seguro (observe os dois 401 separados)

192.168.10.115 - - [24/Aug/2012:15:52:01 +1000] "GET /kerberos/ HTTP/1.1" 401 710 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1"
192.168.10.115 - - [24/Aug/2012:15:52:06 +1000] "GET /kerberos/ HTTP/1.1" 401 680 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1"
192.168.10.115 - [email protected] [24/Aug/2012:15:52:10 +1000] "GET /kerberos/ HTTP/1.1" 200 375 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1"

E uma linha em error.log

[Fri Aug 24 15:52:06 2012] [error] [client 192.168.0.115] gss_accept_sec_context(2) failed: An unsupported mechanism was requested (, Unknown error)

Responder1

Não sei se você ainda precisa da resposta, mas espero ajudar alguém compartilhando minha experiência. Acredito que se você seguir esses passos, tudo funcionará bem.

  1. Certifique-se de ter a entrada DNS adequada paraSYD01TBUG02(Um registro) no seu servidor DNS apontando para o seu servidor web
  2. Certifique-se de ter associação entre o SPN do seu serviço da web e o usuário do AD. No servidor AD execute este comando:

    setspn -A HTTP/SYD01TBUG02.onevue.com.au.local ad_username

  3. Certifique-se de ter gerado o keytab adequado. Execute este comando em seu servidor AD:

    ktpass -princ HTTP/[email protected] -mapuser ad_username -pass xxxxxx -crypto ALL -ptype KRB5_NT_PRINCIPAL -out SYD01TBUG02.keytab -setupn -setpass

    onde xxxxxx é a senha do usuário AD. Nós usamos-cripto TUDOopção para garantir que adicionamos todos os hashes suportados ao arquivo keytab.
  4. Agora você deve copiar o geradoSYD01TBUG02.keytabarquivo para o seu servidor web e copie-o para o diretório determinado. Por exemplo, vamos copiá-lo para o/etc/apache2/keytab/pasta.
  5. Exemplo de arquivo de configuração do Apache para webservice:
    <VirtualHost *:80>
        DocumentRoot "/var/www/kerberos"
        ServerName SYD01TBUG02.onevue.com.au.local
        ServerAlias SYD01TBUG02
        AddDefaultCharset UTF-8
        DirectoryIndex index.php
        ErrorLog /var/log/apache2/error_SYD01TBUG02.log
        TransferLog /var/log/apache2/transfer_SYD01TBUG02.log
        LogLevel warn
        ServerAdmin [email protected]
        
        <Location "/">
            AuthType Kerberos
            KrbAuthRealms ONEVUE.COM.AU.LOCAL
            KrbServiceName HTTP/[email protected]
            Krb5Keytab /etc/apache2/keytab/SYD01TBUG02.keytab
            KrbMethodNegotiate on
            KrbMethodK5Passwd on
            KrbVerifyKDC on
            require valid-user    
        </Location>
        <Directory />
        </Directory>
    </VirtualHost> 
    
  6. Recarregue ou reinicie o apachesudo service apache2 reload
  7. Agora, se você digitar http://SYD01TBUG02/ na barra de endereços do seu navegador, você será automaticamente conectado ao seu serviço da web via SSO (Chrome, navegadores semelhantes ao Chromium e IE suportam SSO pronto para uso, mas também há umplug-in para Firefox).

Espero que isso ajude a configurar sua autenticação Kerberos no servidor web.

PSSe você deseja ativar o SSO por endereço completo (por exemploSYD01TBUG02.onevue.com.au.local) você deve adicionarSYD01TBUG02.onevue.com.au.localpara a zona da intranet por meio de políticas de grupo do AD (se você precisar disso em várias máquinas no domínio) ou localmente por meio das configurações do Internet Explorer. Essas configurações afetam todos os navegadores instalados no sistema.

Responder2

Isso ocorre porque na primeira vez que o usuário digita u/p, um token ntlm é enviado ao servidor. Na segunda vez, é o token Kerberos correto.

Infelizmente, não há como eliminar o primeiro prompt.

Responder3

Se o logon único não for um requisito, você poderá desativar a negociação definindo 'KrbMethodNegotiate off'. Isso lhe dará apenas um login básico e também evitará a solicitação GET extra para cada transação.

informação relacionada