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

Post on 12-Apr-2017

416 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

@SFLinux@clementoudot

Le logiciel 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● contact@savoirfairelinux.com

3@SFLinux@clementoudot

Sommaire

● Présentation de LemonLDAP::NG

● Implémentation des standards

● Écosystème Perl

4@SFLinux@clementoudot

Présentation de LemonLDAP::NG

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

6@SFLinux@clementoudot

Historique

2003 2006 2010 2016

Création du projet

VersionNG

SAMLCAS

OpenID

OpenID Connect

7@SFLinux@clementoudot

Composants

CommonCommon

ManagerManager HandlerHandler

PortalPortal

Interface de configuration

Formulaires et menu

Protection des applications

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

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é

12@SFLinux@clementoudot

Modules d'authentification

LDAPLDAPADAD

ApacheApache SAMLSAML

CASCAS RadiusRadius OpenIDOpenID

WebIDWebID

BrowserBrowserIDID

DBIDBI

YubikeyYubikey

13@SFLinux@clementoudot

Passerelle multi-protocoles

SAMLSAMLCASCAS

OpenID OpenID ConnectConnect

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

15@SFLinux@clementoudot

Implémentation des standards

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

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é

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

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

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

21@SFLinux@clementoudot

11

22

IdentityProvider

ServiceProvider

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

SSO initié par l'IDP

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

23@SFLinux@clementoudot

OpenID 1.0 OpenID 2.0 OpenID Connect

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

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

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

27@SFLinux@clementoudot

http://jwt.io/

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/

29@SFLinux@clementoudot

Écosystème Perl

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

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

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

33@SFLinux@clementoudot

Manager

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

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

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/

35@SFLinux@clementoudot

Merci pour votre attention

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

top related