Salut,
Voilà j'ai passé ma dernière semaine à fouiller dans tous les recoins d'internet pour trouver une réponse à mon problème et jusque là pas de chance, beaucoup d'utilisateurs semblent avoir les même problèmes sans jamais trouver de solution
J'essaie en ce moment d'authentifier un utilisateur d'un domaine Active Directory (sous Windows 2000 Server) sur un site en utilisant kerberos et donc en l'autorisant à ce connecter à partir du moment où celui-ci est authentifié sur AD. Le tout évidemment doit se faire sans retaper de mot de passe...
J'ai donc ceci:
- Mon client ayant ouvert une session avec l'utilisateur toto sur Active Directory sous Windows XP.
- Mon serveur web www-serv (le FQDN donne quelque chose comme ça : www-serv.domaine.com) sous Fedora Core 6 avec Apache 2.2.6, Kerberos client 1.5-23 et le module mod_auth_kerb 5.3
- Mon serveur Active Directory ad-serv contrôleur du domaine domaine.com
Après avoir suivi moult tutos sur le web, je me retrouve avec une configuration comme suit :
Mon problème du coup est le suivant :
- Si je configure apache avec ces options :
AuthType Kerberos
AuthName "Kerberos Login"
KrbMethodNegotiate Off
KrbMethodK5Passwd On
KrbAuthRealms DOMAINE.COM
Krb5KeyTab /etc/krb5.keytab
KrbServiceName HTTP
require valid-user |
Le client se voit demander son login et mot de passe Active Directory et tout fonctionne.
- Par contre si j'inverse Negotiate et K5Passwd pour ne plus avoir à taper de mot de passe, ça ne marche plus.
En capturant les paquets sur le serveur web, je vois cet échange :
(1) Client --------------- GET --------------> serveur web
(2) <--- 401 Authorization Required ---
(3) ----- GET + NTLMSSP_NEGOTIATE ---->
(4) <--- 401 Authorization Required --- |
(1) est un GET normal, pas d'en-tête WWW-Authenticate.
(2) possède l'en-tête "WWW-Authenticate: Negotiate"
(3) est une requète GET + l'en-tête Negotiate est une clé en base64 mais de type NTLMSSP
(4) est une réponse 401 sans en-tête Negotiate fermant la connexion.
Dans le log d'apache, j'ai les erreurs suivantes :
[debug] src/mod_auth_kerb.c(1405): [client A.B.C.D] kerb_authenticate_user entered with user (NULL) and auth_type Kerberos
[debug] src/mod_auth_kerb.c(1405): [client A.B.C.D] kerb_authenticate_user entered with user (NULL) and auth_type Kerberos
[debug] src/mod_auth_kerb.c(1148): [client A.B.C.D] Acquiring creds for HTTP@www-serv.domaine.com
[debug] src/mod_auth_kerb.c(1240): [client A.B.C.D] Verifying client data using KRB5 GSS-API
[debug] src/mod_auth_kerb.c(1256): [client A.B.C.D] Verification returned code 589824
[debug] src/mod_auth_kerb.c(1283): [client A.B.C.D] Warning: received token seems to be NTLM, which isn't supported by the Kerberos module. Check your IE configuration.
[error] [client A.B.C.D] gss_accept_sec_context() failed: Invalid token was supplied (No error) |
Du coup ça marche pas.
Apparemment IE (et Firefox pareil) transmet une requête d'authentification en NTLM alors que d'après ce que je lis partout sur internet, le comportement par défaut est d'utiliser l'authentification Kerberos. En plus de ça moi du NTLM, j'en veux pas
Alors quelqu'un a-t'il une idée pour m'aider ?
J'ai essayé d'être super clair mais si vous avez besoin d'autres indices, n'hésitez pas !
Merci d'avance !