11 votes

Comment demander à mod_auth_kerb de faire son travail malgré l'absence de "require valid-user" ?

J'ai mis en place une authentification SSO en utilisant mod_auth_kerb sur Apache. Ma configuration ressemble à ceci :

<Location /login/ >
    AuthType Kerberos
    AuthName "Kerberos Login"
    KrbMethodNegotiate on
    KrbAuthoritative on
    KrbVerifyKDC on
    KrbAuthRealm D.ETHZ.CH
    Krb5Keytab /etc/HTTP.keytab
    KrbSaveCredentials on
    RequestHeader set KERBEROS_USER %{REMOTE_USER}s
</Location>

Mon problème est que, sans require valid-user mod_auth_kerb n'essaie même pas d'authentifier l'utilisateur et KERBEROS_USER finit par être (null) . Si j'ajoute require valid-user l'utilisateur est authentifié automatiquement si le navigateur le prend en charge, mais il reçoit un affreux formulaire de connexion modal (comme HTTP Basic Auth) si le navigateur ne prend pas en charge Kerberos Negotiate.

Ce que je veux réaliser est que si un utilisateur visite /login/ le mod_auth_kerb tente d'authentifier l'utilisateur par le biais de Kerberos Negotiate. Si cela échoue, un formulaire de connexion HTML normal sera présenté à l'utilisateur.

Est-il possible de configurer Apache/mod_auth_kerb de cette manière ?

12voto

Eric Noob Points 531

Je l'ai fait une fois lorsque j'ai construit un outil simple et unique (pour fusionner Kerberos avec mod_auth_tkt). Cela a nécessité un peu de chicanerie :

  • /webauth/login a été protégé par une require valid-user directive. Si quelqu'un s'est connecté avec des informations d'identification Kerberos valides, nous avons récupéré son nom d'utilisateur dans REMOTE_USER, lui avons donné un cookie d'authentification et l'avons envoyé sur son chemin.

  • La configuration d'Apache utilisait un ErrorDocument pour rediriger les utilisateurs non authentifiés vers /webauth/require_authentication :

    Document d'erreur 401 /webauth/require_authentication

    Cela permettrait d'effectuer les actions suivantes :

    • renvoyer un code de résultat 401 (normalement, les ErrorDocuments mangent votre code de résultat), et
    • Présentez un formulaire de connexion.
  • Le formulaire de connexion ferait exactement ce que vous attendez : présenter un formulaire de nom d'utilisateur/mot de passe, le valider, puis lui donner le cookie d'authentification.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X