S2LQ - Authentification unique sur le Web avec le logiciel libre LemonLDAP::NG

43
@SFLinux @clementoudot Authentification unique sur le Web avec le logiciel libre LemonLDAP::NG

Transcript of S2LQ - Authentification unique sur le Web avec le logiciel libre LemonLDAP::NG

@SFLinux@clementoudot

Authentification unique sur le Web avec le logiciel libre LemonLDAP::NG

2@SFLinux@clementoudot

Clément OUDOT@clementoudot

http://sflx.ca/coudot

● Créé en 1999● >100 personnes● Montréal, Quebec, Toronto, Paris● ISO 9001:2004 / ISO 14001:2008● [email protected]

3@SFLinux@clementoudot

Authentification unique / WebSSO

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@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@SFLinux@clementoudot

Application Web Portail d'authentification

Premier accèsRedirection pour authentification

Génération d'un jeton

Envoi du jeton

Validation du jetonRécupération de l'identité

7@SFLinux@clementoudot

Présentation de LemonLDAP::NG

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

9@SFLinux@clementoudot

Historique

2003 2006 2010 2016

Création du projet

VersionNG

SAMLCAS

OpenID

OpenID Connect

10@SFLinux@clementoudot

Composants

CommonCommon

ManagerManager HandlerHandler

PortalPortal

Interface de configuration

Formulaires et menu

Protection des applications

13@SFLinux@clementoudot

Modules d'authentification

LDAPLDAPADAD

ApacheApache SAMLSAML

CASCAS RadiusRadius OpenIDOpenID

WebIDWebID

BrowserBrowserIDID

DBIDBI

YubikeyYubikey

14@SFLinux@clementoudot

Passerelle multi-protocoles

SAMLSAMLCASCAS

OpenID OpenID ConnectConnect

15@SFLinux@clementoudot

Fonctions « self service »

Changement Changement de mot de de mot de

passepasse

RéinitialisatiRéinitialisation de mot on de mot de passede passe

Création Création de de

comptecompte

16@SFLinux@clementoudot

Références d’utilisation de LemonLDAP::NG

17@SFLinux@clementoudot

Gendarmerie Nationale

● 100 000 utilisateurs● 300 applications

protégées● Plus de 25 millions de

requêtes par jour

18@SFLinux@clementoudot

Nantes Métropole

● Plus de 110 000 utilisateurs (comptes citoyens)

● 70 applications/services en ligne protégés

19@SFLinux@clementoudot

Air Corsica

● 300 utilisateurs● 10 applications

protégées, dont Microsoft SharePoint et Outlook Web Access

20@SFLinux@clementoudot

Ville de Villeurbanne

● 1000 utilisateurs● 10 applications

21@SFLinux@clementoudot

Implémentation des standards

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

23@SFLinux@clementoudot

Client CAS Serveur CAS

Premier accèsRedirection pour authentification

Génération d'un ST

Envoi du ST

Validation du jeton

Récupération de l'identité

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@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@SFLinux@clementoudot

Fournisseur de service (SP) Fournisseur d'identité (IDP)

Premier accèsChoix de l'IDP

Requête d'authentification

Réponse d'authentificationEnvoi de

la réponse

Validation de la signatureLecture de l'assertion

27@SFLinux@clementoudot

11

22

IdentityProvider

ServiceProvider

http://auth.example.com/saml/singleSignOn?IDPInitiated=1&spConfKey=myserviceprovider

SSO initié par l'IDP

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

29@SFLinux@clementoudot

OpenID 1.0 OpenID 2.0 OpenID Connect

30@SFLinux@clementoudot

Partie de confiance (RP) Fournisseur OpenID (OP)

Premier accèsChoix de l'OP

Requête d'authentification

Création du JWT

Envoi du JWT

Validation de la signatureLecture du JWT

Lecture du UserInfo

31@SFLinux@clementoudot

Spécification du protocole

CoreDiscovery Dynamic Client

Registration

Session Management

Form Post Response Mode

MinimalDynamic

Complete

● Publiées sur le site de la fondation OpenID

32@SFLinux@clementoudot

Autres standards impliqués

OAuth 2.0 Core

OAuth 2.0 Bearer

OAuth 2.0 Assertions

OAuth 2.0 JWT Profile

OAuth 2.0 Responses

JWT JWS JWE JWK JWA WebFinger

JOSE

34@SFLinux@clementoudot

L’exemple de France Connect

35

À quoi ça sert ?

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

37

38

Consulter les points de son permis

39

Site service-public.fr

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 stringle 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

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@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/authopenidconnect_franceconnect

● Démonstration : https://auth.openid.club/

43@SFLinux@clementoudot

Merci pour votre attention

Blog : http://slfx.ca/coudotTwitter : @clementoudot