LemonLDAP::NG


LemonLDAP::NG
Un WebSSO libre

 Clément OUDOT

LemonLDAP::NG leader
 Consultant LINAGORA
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
LemonLDAP::NG




    Bas les masques




                                    10/03/11
3                     http://lemonldap-ng.org
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
LemonLDAP::NG




    Pourquoi moi ?




                                    10/03/11
5                     http://lemonldap-ng.org
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
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
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
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
LemonLDAP::NG




     Le WebSSO ?




                                   10/03/11
10                   http://lemonldap-ng.org
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
Architectures

●   Deux architectures complémentaires existent :
    ●    WebSSO par délégation
    ●    WebSSO par mandataire inverse




                                                            10/03/11
    12                                        http://lemonldap-ng.org
Délégation




                     10/03/11
13     http://lemonldap-ng.org
Mandataire inverse (reverse proxy)




                                             10/03/11
14                             http://lemonldap-ng.org
LemonLDAP::NG




     LemonLDAP::NG
       se présente




                                    10/03/11
15                    http://lemonldap-ng.org
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
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
Vue macroscopique




                             10/03/11
18             http://lemonldap-ng.org
Cinématique principale




                                 10/03/11
19                 http://lemonldap-ng.org
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
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
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
●


                                                                      10/03/11
    22                                                  http://lemonldap-ng.org
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
LemonLDAP::NG




     Et les autres ?




                                      10/03/11
24                      http://lemonldap-ng.org
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
Cinématique CAS




                           10/03/11
26           http://lemonldap-ng.org
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
Cinématique OpenID




                              10/03/11
28              http://lemonldap-ng.org
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
Cinématique SAML




                            10/03/11
30            http://lemonldap-ng.org
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
LemonLDAP::NG




     Questions ?




                                    10/03/11
32                    http://lemonldap-ng.org
LemonLDAP::NG




     Merci de votre attention




                                              10/03/11
33                              http://lemonldap-ng.org

LemonLDAP::NG, un WebSSO libre (ConFoo 2011)

  • 1.
    LemonLDAP::NG LemonLDAP::NG Un WebSSO libre Clément OUDOT LemonLDAP::NG leader Consultant LINAGORA
  • 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èreses 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 utiliseune 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'estpas 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 leWebSSO ? ● 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
  • 13.
    Délégation 10/03/11 13 http://lemonldap-ng.org
  • 14.
    Mandataire inverse (reverseproxy) 10/03/11 14 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
  • 18.
    Vue macroscopique 10/03/11 18 http://lemonldap-ng.org
  • 19.
    Cinématique principale 10/03/11 19 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
  • 22.
    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 ● 10/03/11 22 http://lemonldap-ng.org
  • 23.
    Rendre mon applicationcompatible ● 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
  • 26.
    Cinématique CAS 10/03/11 26 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
  • 28.
    Cinématique OpenID 10/03/11 28 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
  • 30.
    Cinématique SAML 10/03/11 30 http://lemonldap-ng.org
  • 31.
    LemonLDAP::NG et lesautres ● 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
  • 32.
    LemonLDAP::NG Questions ? 10/03/11 32 http://lemonldap-ng.org
  • 33.
    LemonLDAP::NG Merci de votre attention 10/03/11 33 http://lemonldap-ng.org