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

33
LemonLDAP::NG Un WebSSO libre Clément OUDOT LemonLDAP::NG leader Consultant LINAGORA LemonLDAP::NG

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

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

LemonLDAP::NGUn WebSSO libre

Clément OUDOT

LemonLDAP::NG leaderConsultant LINAGORA

LemonLDAP::NG

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

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 ?

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

http://lemonldap-ng.org3

10/03/11

Bas les masques

LemonLDAP::NG

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

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

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

http://lemonldap-ng.org5

10/03/11

Pourquoi moi ?

LemonLDAP::NG

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

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

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

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

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

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.) ?

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

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 ?

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

http://lemonldap-ng.org10

10/03/11

Le WebSSO ?

LemonLDAP::NG

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

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é

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

http://lemonldap-ng.org12

10/03/11

Architectures

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

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

http://lemonldap-ng.org13

10/03/11

Délégation

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

http://lemonldap-ng.org14

10/03/11

Mandataire inverse (reverse proxy)

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

http://lemonldap-ng.org15

10/03/11

LemonLDAP::NG se présente

LemonLDAP::NG

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

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

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

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

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

http://lemonldap-ng.org18

10/03/11

Vue macroscopique

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

http://lemonldap-ng.org19

10/03/11

Cinématique principale

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

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)

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

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

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

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

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

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

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

http://lemonldap-ng.org24

10/03/11

Et les autres ?

LemonLDAP::NG

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

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

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

http://lemonldap-ng.org26

10/03/11

Cinématique CAS

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

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

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

http://lemonldap-ng.org28

10/03/11

Cinématique OpenID

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

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

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

http://lemonldap-ng.org30

10/03/11

Cinématique SAML

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

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

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

http://lemonldap-ng.org32

10/03/11

Questions ?

LemonLDAP::NG

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

http://lemonldap-ng.org33

10/03/11

Merci de votre attention

LemonLDAP::NG