Download - LemonLDAP::NG, un WebSSO libre (ConFoo 2011)
LemonLDAP::NGUn WebSSO libre
Clément OUDOT
LemonLDAP::NG leaderConsultant LINAGORA
LemonLDAP::NG
http://lemonldap-ng.org2
10/03/11
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 ?
http://lemonldap-ng.org3
10/03/11
Bas les masques
LemonLDAP::NG
http://lemonldap-ng.org4
10/03/11
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
http://lemonldap-ng.org5
10/03/11
Pourquoi moi ?
LemonLDAP::NG
http://lemonldap-ng.org6
10/03/11
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
http://lemonldap-ng.org7
10/03/11
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
http://lemonldap-ng.org8
10/03/11
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.) ?
http://lemonldap-ng.org9
10/03/11
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 ?
http://lemonldap-ng.org10
10/03/11
Le WebSSO ?
LemonLDAP::NG
http://lemonldap-ng.org11
10/03/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é
http://lemonldap-ng.org12
10/03/11
Architectures
● Deux architectures complémentaires existent :● WebSSO par délégation● WebSSO par mandataire inverse
http://lemonldap-ng.org13
10/03/11
Délégation
http://lemonldap-ng.org14
10/03/11
Mandataire inverse (reverse proxy)
http://lemonldap-ng.org15
10/03/11
LemonLDAP::NG se présente
LemonLDAP::NG
http://lemonldap-ng.org16
10/03/11
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
http://lemonldap-ng.org17
10/03/11
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
http://lemonldap-ng.org18
10/03/11
Vue macroscopique
http://lemonldap-ng.org19
10/03/11
Cinématique principale
http://lemonldap-ng.org20
10/03/11
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)
http://lemonldap-ng.org21
10/03/11
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
http://lemonldap-ng.org22
10/03/11
Méthodes d'authentification
● LemonLDAP::NG supporte de nombreuses méthodes d'authentification :● LDAP● Database● SSL X509● Apache built-in modules (Kerberos, OTP, ...)● SAML 2.0● OpenID● Twitter● CAS
●
http://lemonldap-ng.org23
10/03/11
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
http://lemonldap-ng.org24
10/03/11
Et les autres ?
LemonLDAP::NG
http://lemonldap-ng.org25
10/03/11
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
http://lemonldap-ng.org26
10/03/11
Cinématique CAS
http://lemonldap-ng.org27
10/03/11
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
http://lemonldap-ng.org28
10/03/11
Cinématique OpenID
http://lemonldap-ng.org29
10/03/11
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
http://lemonldap-ng.org30
10/03/11
Cinématique SAML
http://lemonldap-ng.org31
10/03/11
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
http://lemonldap-ng.org32
10/03/11
Questions ?
LemonLDAP::NG
http://lemonldap-ng.org33
10/03/11
Merci de votre attention
LemonLDAP::NG