LemonLDAP::NG est un logiciel libre de WebSSO et contrôle d'accès implémentant les principaux standards du marché comme CAS, SAML et OpenIDConnect. Intégré nativement aux distributions GNU/Linux, c'est une alternative très prisée de logiciels comme CA SiteMinder, Active Directory Federation Services, JASIG CAS, Shibboleth ou encore ForgeRock OpenAM. Il est très utilisé en France en particulier dans les Ministères (Finances, Culture, Justice, Gendarmerie Nationale, Agriculture, Intérieur) et les collectivités territoriales (Métropole de Montpellier, Ville de Villeurbanne, Métropole de Nantes).
4. 4
@SFLinux
@clementoudot
Définitions
● SSO : Single Sign On / Authentification unique
● WebSSO : SSO pour les applications Web
● Protocoles de WebSSO :
– CAS : Central Authentication Service
– SAML : Security Assertion Markup Language
– OpenID Connect
– WS-Federation
5. 5
@SFLinux
@clementoudot
Fonctionnement basique d'un WebSSO
1.L'utilisateur accède sans être authentifié à une
application intégrée au WebSSO
2.Il est redirigé sur un service d'authentification qui valide
son identité et fournit un jeton
3.Le jeton est transmis à l'application qui obtient l'identité
de l'utilisateur en validant/résolvant ce jeton
4.L'utilisateur accède aux autres applications sur le
même principe, sans se réauthentifier
6. 6
@SFLinux
@clementoudot
Application Web Portail d'authentification
Premier accès
Redirection pour
authentification
Génération
d'un jeton
Envoi
du jeton
Validation du jeton
Récupération de l'identité
8. 8
@SFLinux
@clementoudot
LemonLDAP::NG
● Logiciel libre (GPLv2+) / OW2 consortium
● Authentification unique (SSO), contrôle d'accès
● Fournisseur de Service / Fournisseur d'Identité
● Perl/Apache/Nginx/CGI/FCGI
● Réinitialisation de mot de passe et création de compte
● http://www.lemonldap-ng.org
22. 22
@SFLinux
@clementoudot
Le protocole CAS
● Central Authentication Service
● À l'origine, uniquement dédié à l'authentification
(versions 1.0 et 2.0 du protocole)
● Possibilité de partager des attributs depuis la version
3.0 du protocole
24. 24
@SFLinux
@clementoudot
Le protocole SAML
● Security Assertion Markup Language
● Basé sur XML, XML Security, SOAP
● Choix des méthodes HTTP (GET ou POST)
● Choix de l'utilisation d'un artefact pour transmettre les
messages via SOAP (Artefact GET ou Artefact POST)
● Publication des informations de configuration
(metadonnées) au format XML
25. 25
@SFLinux
@clementoudot
Spécifications du protocole
● Publiées sur le site de l'OASIS :
– saml-core-2.0-os
– saml-authn-context-2.0-os
– saml-bindings-2.0-os
– saml-conformance-2.0-os
– saml-metadata-2.0-os
– saml-profiles-2.0-os
26. 26
@SFLinux
@clementoudot
Fournisseur de service (SP) Fournisseur d'identité (IDP)
Premier accès
Choix de l'IDP
Requête
d'authentification
Réponse
d'authentificationEnvoi de
la réponse
Validation de la signature
Lecture de l'assertion
28. 28
@SFLinux
@clementoudot
Le protocole OpenID Connect
● Basé sur OAuth2, REST, JSON, JWT, JOSE
● Adapté aux navigateurs Web et aux applications
mobiles natives
● Publication des informations de configuration au format
JSON
● Consentement de l'utilisateur requis sur le partage
d'attributs
30. 30
@SFLinux
@clementoudot
Partie de confiance (RP) Fournisseur OpenID (OP)
Premier accès
Choix de l'OP
Requête
d'authentification
Création
du JWT
Envoi
du JWT
Validation de la signature
Lecture du JWT
Lecture du UserInfo
36. 36
Un service d'authentification
● FranceConnect ne fournit pas directement
l'authentification, mais s'appuie sur des fournisseurs
d'identités agréés, comme le service des impôts
● Après authentification, une « identité pivot » est
transmise au service final (site d'une mairie, service
public, etc.)
● Les échanges sont réalisés à l'aide du protocole OpenID
Connect
40. 40
Identité pivot (particulier)
Champs Type Description
given_name string prénoms séparés par des espaces (standard OpenIDConnect)
family_name string le nom de famille de naissance (standard OpenIDConnect)
birthdate string la date de naissance au format YYYY-MM-DD (standard OpenIDConnect)
gender string male pour les hommes, female pour les femmes (standard OpenIDConnect)
birthplace string
le code INSEE du lieu de naissance (ou une chaîne vide si la personne est née à
l'étranger)
birthcountry string le code INSEE du pays de naissance
41. 41
Identité pivot (entreprise)
Champs Type Description
given_name string prénoms séparés par des espaces (standard OpenIDConnect)
family_name string le nom de famille (standard OpenIDConnect)
email string l'adresse mail de la personne
siret string le numéro SIRET ou SIREN de l'entreprise (non standard)
42. 42
@SFLinux
@clementoudot
Lien LL::NG / FranceConnect
● LemonLDAP::NG peut être configuré comme RP OpenID
Connect
● France Connect peut être déclaré comme OP OpenID
Connect
● Procédure détaillée :
http://lemonldap-ng.org/documentation/latest/authopen
idconnect_franceconnect
● Démonstration : https://auth.openid.club/