Apache usando mod_auth_kerb siempre solicita la contraseña dos veces

Apache usando mod_auth_kerb siempre solicita la contraseña dos veces

(Apretón de Debian)

Estoy intentando configurar Apache para que use la autenticación Kerberos para permitir que los usuarios de AD inicien sesión. Está funcionando, pero solicita al usuario dos veces un nombre de usuario y contraseña, y la primera vez se ignora (sin importar lo que se ingrese). ) Solo el segundo mensaje incluye la cadena AuthName de la configuración (es decir, la primera ventana es un nombre de usuario/contraseña genérica, la segunda incluye el título "Inicio de sesión Kerberos") No me preocupa que la autenticación integrada de Windows funcione en esta etapa. Solo quiero que los usuarios puedan iniciar sesión con su cuenta AD para que no necesitemos configurar un segundo repositorio de cuentas de usuario.

¿Cómo soluciono esto para eliminar ese primer mensaje inútil?

Las directivas en el archivo 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

El registro de acceso al acceder al directorio seguro (tenga en cuenta los dos 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"

Y una línea en 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)

Respuesta1

No sé si todavía necesitas la respuesta, pero espero ayudar a alguien más compartiendo mi experiencia. Creo que si sigues estos pasos, todo funcionará bien.

  1. Asegúrese de tener la entrada DNS adecuada paraSYD01TBUG02(Un registro) en su servidor DNS apuntando a su servidor web
  2. Asegúrese de tener asociación entre el SPN de su servicio web y el usuario de AD. En el servidor AD ejecute este comando:

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

  3. Asegúrese de haber generado la tabla de claves adecuada. Ejecute este comando en su servidor AD:

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

    donde xxxxxx es la contraseña del usuario de AD. Usamos-cripto TODOSopción para asegurarnos de agregar todos los hashes admitidos al archivo keytab.
  4. Ahora deberías copiar generado.SYD01TBUG02.tabla de clavesarchivo a su servidor web y cópielo en un directorio determinado. Por ejemplo, copiémoslo en el/etc/apache2/keytab/carpeta.
  5. Ejemplo de archivo de configuración de Apache para servicio web:
    <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. Recargar o reiniciar apachesudo service apache2 reload
  7. Ahora, si escribe http://SYD01TBUG02/ en la barra de direcciones de su navegador, iniciará sesión automáticamente en su servicio web a través de SSO (Chrome, los navegadores tipo Chromium e IE admiten SSO de fábrica, pero también hay uncomplemento para Firefox).

Espero que le ayude a configurar su autenticación Kerberos en el servidor web.

PDSi desea habilitar SSO por dirección completa (p. ej.SYD01TBUG02.onevue.com.au.local) deberías agregarSYD01TBUG02.onevue.com.au.locala la zona de intranet ya sea a través de las Políticas de grupo de AD (si las necesita en varias máquinas del dominio) o localmente a través de la configuración de Internet Explorer. Estas configuraciones afectan a todos los navegadores instalados en el sistema.

Respuesta2

Esto se debe a que la primera vez que el usuario ingresa u/p se envía un token ntlm al servidor. La segunda vez es el token Kerberos correcto.

Lamentablemente, no hay forma de eliminar el primer mensaje.

Respuesta3

Si el inicio de sesión único no es un requisito, puede desactivar la negociación desactivando 'KrbMethodNegotiate'. Esto le brindará un solo inicio de sesión básico y también evitará la solicitud GET adicional para cada transacción.

información relacionada