Kerberos et mod auth kerb pour SSO sur Active Directory : Différence entre versions
De wikiGite
Ligne 11 : | Ligne 11 : | ||
= Sources = | = Sources = | ||
− | La procédure la plus pertinente est celle de | + | La procédure la plus pertinente est celle de [http://www.grolmsnet.de/kerbtut|Achim Grolms] |
= Installation = | = Installation = |
Version du 28 avril 2009 à 13:45
Le SSO (Single-Sign On) permettant à un poste sous Windows de s'authentifier automatiquement sur un site web est possible en utilisant Kerberos sur le serveur Web, pour valider l'utilisateur sur un contrôleur Active Directory.
Le schéma est le suivant :
- L'utilisateur s'authentifie sur sa session Windows, dans le domaine, donc via Active Directory
- Il obtient un ticket Kerberos (puisqu' AD fonctionne avec Kerberos sous Win2000 SP2 et suivant, et n'utilise plus NTLM qu'en mode dégradé pour compatibilité (ancien systèmes 98, anciennes versions de navigateurs)
- Lorsqu'il lance IE (6 et supérieurs) ou Firefox (3), s'ils sont bien configurés, ce ticket est envoyé dans le flux HTTP
- Le serveur web récupère ce ticket grâce à mod_auth_kerb, le valide auprès du contrôleur Active Directory (grâce à son propre client Kerberos)
- Si le ticket est OK, on obtient le login de l'utilisateur dans les variables REMOTE_USER et PHP_AUTH_USER, il n'y a plus qu'à les traiter au niveau de l'applicatif hébergé pour valider l'accès
L'utilisateur n'a donc pas à se ré-authentifier via une fenêtre de login lorsqu'il accède au site protégé, tout est automatique.
Sources
La procédure la plus pertinente est celle de Grolms
Installation
Sur le serveur WEB
On a travaillé ici sur un serveur CentOS4/BlueQuartz.
Client Kerberos
Les paquet clients Kerberos doivent être installés :
yum install krb5-libs krb5-workstation
Ce paquets étant pobablement déjà installés.
On construit le fichier de configuration Kerberos avec ces informations au minimum :
- DOMAIN.COM est le domaine (nom long DNS) du domaine Active directory
- dc1 est le nome d'hôte d'un contrôleur de domaine Active Directory
- NOTE : les majuscules/minuscules sont importantes !
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = DOMAIN.COM dns_lookup_realm = false dns_lookup_kdc = false [realms] DOMAIN.COM = { kdc = dc1:88 admin_server = dc1:749 default_domain = domain.com } [domain_realm] .domain.com = DOMAIN.COM domain.com = DOMAIN.COM
Test du client Kerberos : il s'agit d'obtenir un ticket de la part du contrôleur Active Directory, comme le font les postes Windows
kinit <utilisateur windows>@DOMAIN.COM
kinit doit demander le mot de passe de l'utilisateur, et ne renvoyer aucune erreur après saisie de celui-ci.
On voit le ticket obtenu par
klist
Si tout est bon, on peut détruire ce ticket de test pour éviter des conflits ultérieurs
kdestroy
mod_auth_kerb
Ce module permet à Apache d'intercepter les données Kerberos dans le flux HTTP.
Le module fourni dans les repository CentOS est en version 5.0 et ne fonctionne à priori pas... On va donc compiler une version à jour (5.4 en avril 2009)