2. Questions du jour
● Qui est ce conférencier devant moi ?
● Pourquoi faire du SSO ?
● Qu'est-ce que le SSO ?
● Comment fonctionne LemonLDAP::NG ?
● Et les autres dans tout ça : CAS, OpenID,
Shibboleth, SAML, ...
● Ai-je bien tout compris à cette conférence ?
10/03/11
2 http://lemonldap-ng.org
3. LemonLDAP::NG
Bas les masques
10/03/11
3 http://lemonldap-ng.org
4. Clément OUDOT
● Contributeur LemonLDAP::NG depuis 2007,
Leader depuis 2011, en relai de Xavier
GUIMARD
● Leader du projet LDAP Tool Box
● Actif dans les communautés OpenLDAP et
LDAP Synchronization Connector
● Membre de la cellule Identité / Sécurité du
Groupe LINAGORA depuis 2003
● Collabore au produit LINAGORA LinID
10/03/11
4 http://lemonldap-ng.org
5. LemonLDAP::NG
Pourquoi moi ?
10/03/11
5 http://lemonldap-ng.org
6. Mon application gère ses utilisateurs
● Mon application possède sa propre base
d'utilisateurs avec les mots de passe
● Les utilisateurs s'authentifient chez moi
10/03/11
6 http://lemonldap-ng.org
7. Mon application utilise une base centrale
● Les utilisateurs existent déjà dans une base, du
coup je ne stocke pas les mots de passe
● Par contre les utilisateurs doivent toujours
m'envoyer leur mot de passe
10/03/11
7 http://lemonldap-ng.org
8. La sécurité n'est pas mon métier
● Qu'est-ce que la complexité d'un mot de
passe ?
● Qu'est qu'une attaque par force brute ?
● Injection SQL, faille XSS ?
● Expiration d'un mot de passe, conservation
d'un historique, formulaire de changement de
mot de passe ?
● Comment changer mon mode d'authentification
(biométrie, carte à puce, Kerberos, etc.) ?
10/03/11
8 http://lemonldap-ng.org
9. La gestion d'identité n'est pas mon métier
● Comment créer le compte d'un utilisateur
existant dans un autre référentiel ?
● Comment savoir que les informations de
l'utilisateur ont changé ?
● Comment savoir que l'utilisateur n'existe plus ?
● Qui doit avoir accès à mon application, qui ne
doit pas y accéder ?
● Que faire quand l'utilisateur a perdu son mot de
passe ?
10/03/11
9 http://lemonldap-ng.org
10. LemonLDAP::NG
Le WebSSO ?
10/03/11
10 http://lemonldap-ng.org
11. Qu'est-ce que le WebSSO ?
● SSO signifie « Single Sign On », qui peut se
traduire en français par « authentification
unique »
● Le WebSSO se consacre à l'authentification
unique pour les applications Web, c'est-à-dire
des applications client-serveur dont le client est
un navigateur Web (IE, Firefox, etc.)
● Le principe de base est d'intercepter les
requêtes entre le client et le serveur, et indiquer
au serveur que le client est bien authentifié
10/03/11
11 http://lemonldap-ng.org
12. Architectures
● Deux architectures complémentaires existent :
● WebSSO par délégation
● WebSSO par mandataire inverse
10/03/11
12 http://lemonldap-ng.org
15. LemonLDAP::NG
LemonLDAP::NG
se présente
10/03/11
15 http://lemonldap-ng.org
16. Historique
● LemonLDAP a été créé en 2003 par Eric GERMAN
(Ministère des Finances, France) pour remplace Novell
iChain (Novell → llevon → Lemon)
● Comme Novell ou SiteMinder, LemonLDAP utilise des en-
têtes HTTP pour propager l'identité de l'utilisateur
● LemonLDAP::NG est une réécriture complète de
LemonLDAP par Xavier GUIMARD (Gendarmerie
Nationale, France) en 2005
● Thomas CHEMINEAU et Clément OUDOT complètent
l'équipe de développement
10/03/11
16 http://lemonldap-ng.org
17. Parlons technique
● LemonLDAP::NG repose sur trois composants :
● Le portail (Portal) : interface d'authentification,
menu des applications, changement de mot de
passe
● Le handler (Handler) : agent réalisant le contrôle
des accès aux applications Web
● Le manager (Manager) : interface de configuration,
explorateur de sessions
● Tous les composants sont écrits en Perl
● Nécessite Apache et mod_perl
10/03/11
17 http://lemonldap-ng.org
20. Les phases d'authentification
● LemonLDAP::NG découpe l'authentification en
plusieurs phases :
● Vérification des sessions existantes
● Récupération des données d'authentification
● Recherche de l'utilisateur
● Authentification
● Stockage des données dans la session
● Écriture du cookie
● Redirection (menu ou application demandée)
10/03/11
20 http://lemonldap-ng.org
21. Les différentes bases
● Plusieurs « bases » sont utilisées :
● Authentification : comment vérifier les données
d'authentification
● Utilisateurs : où trouver les données de l'utilisateur
● Mots de passe : où changer le mot de passe de
l'utilisateur
● Exemple d'utilisation : authentification par
Kerberos, données de l'utilisateur dans un
annuaire LDAP
10/03/11
21 http://lemonldap-ng.org
23. Rendre mon application compatible
● LemonLDAP::NG est très peu intrusif :
● Pas de module à importer dans le code
● Pas de WebService à appeler
● Simplement lire une en-tête HTTP !
● Une application qui utilise l'authentification
Apache (REMOTE_USER) est compatible !
● Adaptations possibles de l'application :
● Auto-création du compte local de l'utilisateur
● Suppression du formulaire d'authentification
10/03/11
23 http://lemonldap-ng.org
24. LemonLDAP::NG
Et les autres ?
10/03/11
24 http://lemonldap-ng.org
25. CAS
● Central Authentication Service
● Documentation du protocole pour 1.0 et 2.0
● Utilisation de tickets de service dans l'URL,
avec validation par un lien dorsal
● Possibilité de tickets proxy
● Pas de partage d'attributs
10/03/11
25 http://lemonldap-ng.org
27. OpenID
● L'identifiant de l'utilisateur contient l'adresse du
service d'authentification
● Aussi basé sur les redirections HTTP
● Permet le partage d'attributs (mais plusieurs
normes possibles...)
● Pas de notion de cercle de confiance
10/03/11
27 http://lemonldap-ng.org
29. SAML
● Cercle de confiance : enregistrement préalable
des fournisseurs de services et des
fournisseurs d'identités
● Plusieurs méthodes : GET / POST / Artefact
GET / Artefact POST
10/03/11
29 http://lemonldap-ng.org
31. LemonLDAP::NG et les autres
● LemonLDAP::NG peut déléguer son
authentification à CAS, OpenID et SAML (avec
récupération d'attributs en OpenID et SAML)
● LemonLDAP::NG peut fournir l'identité par
CAS, OpenID et SAML (avec fourniture
d'attributs pour OpenID et SAML)
● LemonLDAP::NG peut agir comme un pont
entre tous ces protocoles
10/03/11
31 http://lemonldap-ng.org