présentation de lemonldap::ng aux journées perl 2016

35
@SFLinux @clementoudot Le logiciel LemonLDAP::NG

Upload: clement-oudot

Post on 12-Apr-2017

416 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Présentation de LemonLDAP::NG aux Journées Perl 2016

@SFLinux@clementoudot

Le logiciel LemonLDAP::NG

Page 2: Présentation de LemonLDAP::NG aux Journées Perl 2016

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]

Page 3: Présentation de LemonLDAP::NG aux Journées Perl 2016

3@SFLinux@clementoudot

Sommaire

● Présentation de LemonLDAP::NG

● Implémentation des standards

● Écosystème Perl

Page 4: Présentation de LemonLDAP::NG aux Journées Perl 2016

4@SFLinux@clementoudot

Présentation de LemonLDAP::NG

Page 5: Présentation de LemonLDAP::NG aux Journées Perl 2016

5@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

Page 6: Présentation de LemonLDAP::NG aux Journées Perl 2016

6@SFLinux@clementoudot

Historique

2003 2006 2010 2016

Création du projet

VersionNG

SAMLCAS

OpenID

OpenID Connect

Page 7: Présentation de LemonLDAP::NG aux Journées Perl 2016

7@SFLinux@clementoudot

Composants

CommonCommon

ManagerManager HandlerHandler

PortalPortal

Interface de configuration

Formulaires et menu

Protection des applications

Page 9: Présentation de LemonLDAP::NG aux Journées Perl 2016

9@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

Page 10: Présentation de LemonLDAP::NG aux Journées Perl 2016

10@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é

Page 12: Présentation de LemonLDAP::NG aux Journées Perl 2016

12@SFLinux@clementoudot

Modules d'authentification

LDAPLDAPADAD

ApacheApache SAMLSAML

CASCAS RadiusRadius OpenIDOpenID

WebIDWebID

BrowserBrowserIDID

DBIDBI

YubikeyYubikey

Page 13: Présentation de LemonLDAP::NG aux Journées Perl 2016

13@SFLinux@clementoudot

Passerelle multi-protocoles

SAMLSAMLCASCAS

OpenID OpenID ConnectConnect

Page 14: Présentation de LemonLDAP::NG aux Journées Perl 2016

14@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

Page 15: Présentation de LemonLDAP::NG aux Journées Perl 2016

15@SFLinux@clementoudot

Implémentation des standards

Page 16: Présentation de LemonLDAP::NG aux Journées Perl 2016

16@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

Page 17: Présentation de LemonLDAP::NG aux Journées Perl 2016

17@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é

Page 18: Présentation de LemonLDAP::NG aux Journées Perl 2016

18@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

Page 19: Présentation de LemonLDAP::NG aux Journées Perl 2016

19@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

Page 20: Présentation de LemonLDAP::NG aux Journées Perl 2016

20@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

Page 21: Présentation de LemonLDAP::NG aux Journées Perl 2016

21@SFLinux@clementoudot

11

22

IdentityProvider

ServiceProvider

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

SSO initié par l'IDP

Page 22: Présentation de LemonLDAP::NG aux Journées Perl 2016

22@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

Page 23: Présentation de LemonLDAP::NG aux Journées Perl 2016

23@SFLinux@clementoudot

OpenID 1.0 OpenID 2.0 OpenID Connect

Page 24: Présentation de LemonLDAP::NG aux Journées Perl 2016

24@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

Page 25: Présentation de LemonLDAP::NG aux Journées Perl 2016

25@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

Page 26: Présentation de LemonLDAP::NG aux Journées Perl 2016

26@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

Page 27: Présentation de LemonLDAP::NG aux Journées Perl 2016

27@SFLinux@clementoudot

http://jwt.io/

Page 28: Présentation de LemonLDAP::NG aux Journées Perl 2016

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

Page 29: Présentation de LemonLDAP::NG aux Journées Perl 2016

29@SFLinux@clementoudot

Écosystème Perl

Page 30: Présentation de LemonLDAP::NG aux Journées Perl 2016

30@SFLinux@clementoudot

Moose / Mouse

● Utilisation de Mouse (plus léger) sauf en Perl > 5.22 (bug https://github.com/gfx/p5-Mouse/issues/60)

● Principaux objets Mouse :

– Lemonldap::NG::Common::Session– Lemonldap::NG::Common::Captcha– Lemonldap::NG::Common::PSGI::Request– Lemonldap::NG::Manager::Conf::Parser

Page 31: Présentation de LemonLDAP::NG aux Journées Perl 2016

31@SFLinux@clementoudot

Les modules Apache::Session

● Nouveaux modules fournis via CPAN :– Apache::Session::LDAP– Apache::Session::NoSQL– Apache::Session::MongoDB– Apache::Session::Browseable

● Module interne intégrant la gestion du cache local : Lemonldap::NG::Common::Session

● Module d'interface à Apache::Session : Lemonldap::NG::Common::Apache ::Session

Page 32: Présentation de LemonLDAP::NG aux Journées Perl 2016

32@SFLinux@clementoudot

Handler::API

● Sélection automatique d'une API pour la requête HTTP dans module Lemonldap::NG::Handler::API :– ApacheMP1

– ApacheMP2

– PSGI (Nginx)

– CGI

Page 33: Présentation de LemonLDAP::NG aux Journées Perl 2016

33@SFLinux@clementoudot

Manager

● Frontend écrit en AngularJS● Backend Perl avec routeur dédié :

Lemonldap::NG::Common::PSGI::Router

Page 34: Présentation de LemonLDAP::NG aux Journées Perl 2016

34@SFLinux@clementoudot

CPAN

● Modules LL::NG publiés sur le CPAN :– http://search.cpan.org/dist/Lemonldap-NG-Common/

– http://search.cpan.org/dist/Lemonldap-NG-Handler/

– http://search.cpan.org/dist/Lemonldap-NG-Manager/

– http://search.cpan.org/dist/Lemonldap-NG-Portal/

Page 35: Présentation de LemonLDAP::NG aux Journées Perl 2016

35@SFLinux@clementoudot

Merci pour votre attention

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