Une conférence proposée par Christophe Maudoux
Je commencerai par présenter comment protéger des applications avec LemonLDAP::NG en mode reverse proxy, principal mode de raccordement utilisé pour protéger les applications des FSI.
J’expliquerai ensuite le principe de fonctionnement des handlers LL::NG en général et le handler DevOps en particuliers.
Enfin, je détaillerai comment mettre en œuvre une infrastructure DevOps complète basée sur le serveur Web Nginx et comment le STSISI a déployé le « SSO as a Service » pour offrir de nouvelles fonctionnalités aux équipes de développement.
2. – SSO as a Service –
Comment mettre en œuvre
une architecture SSO DevOps avec
LemonLDAP::NG
24 octobre 2023 – Paris
Christophe Maudoux
Identity Days 2023
3. Christophe Maudoux
Ingénieur réseaux & systèmes
Doctorant en cybersécurité
MCF associé au Cnam Paris
Mainteneur LemonLDAP::NG
Architecte & Administrateur
plateformes SSO à l’ANFSI
christophe-maudoux-iam
I. WebSSO & LemonLDAP::NG
II. Modes de raccordement
III. Plateformes SSO pour les FSI
IV. SSO as a Service
24 octobre 2023 – Paris
Christophe Maudoux
Identity Days 2023
5. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Solution AAA
Cinématique SSO
Équipe développement
Cycle développement
Modes de
raccordement
Plateformes SSO pour
les FSI
SSO as a Service
LemonLDAP::NG 1
Authentification unique AAA
Solution complète AAA :
Authentication Vérification d’identité (̸= identification)
Authorization Contrôle d’accès (règles)
Accounting Traces journaux d’activité (imputabilité des actions)
1. LemonLDAP : :NG - Web SSO and Access Management Free Software. url :
https://lemonldap-ng.org/.
5 / 29
Identity Days 2023
6. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Solution AAA
Cinématique SSO
Équipe développement
Cycle développement
Modes de
raccordement
Plateformes SSO pour
les FSI
SSO as a Service
LemonLDAP::NG
Cinématique SSO
1. Utilisateur NON authentifié essaye d’accéder à une ressource protégée
2. Redirigé par LemonLDAP::NG vers le Portail unique d’authentification
→ Authentification
3. Portail fournit un jeton SSO (cookie) puis redirige utilisateur vers la ressource
initialement demandée :
→ Authentifié (dispose d’un cookie SSO)
→ Vérification des règles d’accès
6 / 29
Identity Days 2023
7. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Solution AAA
Cinématique SSO
Équipe développement
Cycle développement
Modes de
raccordement
Plateformes SSO pour
les FSI
SSO as a Service
LemonLDAP::NG 2
Équipe de développement
Xavier Guimard (Yadd)
Christophe Maudoux
Clément Oudot (KPT)
Maxime Besson
David Coutadeur
2. X. Guimard et al. “LemonLDAP : :NG”. In : (déc. 2010). url :
https://hal.inria.fr/hal-03776592.
7 / 29
Identity Days 2023
8. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Solution AAA
Cinématique SSO
Équipe développement
Cycle développement
Modes de
raccordement
Plateformes SSO pour
les FSI
SSO as a Service
LemonLDAP::NG
Cycle de développement 3 (le p’tit vélo LemonLDAP::NG. . .)
Cycle interne de validation / Cycle communautaire d’intégration continue
3. GitLab OW2 LemonLDAP : :NG. url : https://gitlab.ow2.org/lemonldap-ng.
8 / 29
Identity Days 2023
10. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Modes de
raccordement
Fédération des Identités
SAMLv2
OIDC
Mandataire inverse
Agent
Plateformes SSO pour
les FSI
SSO as a Service
Par fédération des identités
10 / 29
Identity Days 2023
11. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Modes de
raccordement
Fédération des Identités
SAMLv2
OIDC
Mandataire inverse
Agent
Plateformes SSO pour
les FSI
SSO as a Service
Fédération des Identités
Cinématique SAMLv2 (Fournisseur d’identité)
Tous les flux passent par le navigateur
LemonLDAP::NG → IdP ou SP
11 / 29
Identity Days 2023
12. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Modes de
raccordement
Fédération des Identités
SAMLv2
OIDC
Mandataire inverse
Agent
Plateformes SSO pour
les FSI
SSO as a Service
Fédération des Identités
Cinématique OIDC (Authorization Code flow)
Implicit Hybrid flows → dépréciés !
LemonLDAP::NG → OP ou RP
12 / 29
Identity Days 2023
13. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Modes de
raccordement
Fédération des Identités
Mandataire inverse
Agent
Plateformes SSO pour
les FSI
SSO as a Service
Par mandataire inverse (RVPRX)
LemonLDAP::NG est codé en Perl supporte les principaux serveurs Web :
les serveurs Perl tels que Starman ou Corona → applications Perl
LemonLDAP::NG = process externe ⇒ Nécessite mécanisme CGI
Apache : Module externe Mod perl2
Nginx : Serveur FastCGI ou uWSGI
13 / 29
Identity Days 2023
14. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Modes de
raccordement
Fédération des Identités
Mandataire inverse
Agent
Plateformes SSO pour
les FSI
SSO as a Service
Mandataire inverse Agent
Architecture avec Reverse Proxies
Applications NON directement accessibles
LemonLDAP::NG → différents types d’agent (handler)
14 / 29
Identity Days 2023
15. Plateformes SSO
des
Forces de Sécurité Intérieure
Différents besoins
24 octobre 2023 – Paris
Christophe Maudoux
Identity Days 2023
16. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Modes de
raccordement
Plateformes SSO pour
les FSI
Cloisonnement
Architecture
SSO as a Service
Plateformes des FSI
Cloisonnement des populations applications
Déclinées en Prod, PréProd, Form Dév
Intranet
Proxyma SSO GN (≈ 350 app. / 130 000 users)
Cheops SSO PN (≈ 150 app. / 150 000 users)
PSI SSO fédéré → FS GN, PN, Préfectures
JudiWeb SSO DMZ → FS autres ministères
Internet
Curasso SSO GN (formation continue)
Calypsso SSO PN
Espresso SSO autres utilisateurs (recrutement)
Extensso SSO en DMZ (France Connect Agent)
Règles de gestion des utilisateurs droits d’accès différents
16 / 29
Identity Days 2023
17. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Modes de
raccordement
Plateformes SSO pour
les FSI
Cloisonnement
Architecture
SSO as a Service
Plateformes des FSI
Présentation architecture de base
17 / 29
Identity Days 2023
19. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Modes de
raccordement
Plateformes SSO pour
les FSI
SSO as a Service
LL : :NG SSOaaS
Fonctionnement
Intégration Handler
Architecture DevOps
Template Nginx
Template Apache
Exemple ’rules.json’
CheckDevOps
RulesEditor
Handler DevOps
LemonLDAP::NG SSO as a Service
LemonLDAP::NG → WebSSO AAA
Approche DevOps – SSOaaS :
Authorization Applications gèrent droits d’accès → Définition des règles
Accounting Applications choisissent les attributs utilisateurs → Sélection des entêtes
Par contre, authentification NON déléguée aux applications !
Authentication LemonLDAP::NG authentifie les utilisateurs
⇒ Serveur d’authentification centralisé
Surcharge de la configuration SSO par les applications
19 / 29
Identity Days 2023
20. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Modes de
raccordement
Plateformes SSO pour
les FSI
SSO as a Service
LL : :NG SSOaaS
Fonctionnement
Intégration Handler
Architecture DevOps
Template Nginx
Template Apache
Exemple ’rules.json’
CheckDevOps
RulesEditor
Handler DevOps
Principe de fonctionnement
20 / 29
Identity Days 2023
21. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Modes de
raccordement
Plateformes SSO pour
les FSI
SSO as a Service
LL : :NG SSOaaS
Fonctionnement
Intégration Handler
Architecture DevOps
Template Nginx
Template Apache
Exemple ’rules.json’
CheckDevOps
RulesEditor
Handler DevOps
Intégration LemonLDAP::NG (standard PSGI) — Nginx (protocole uwsgi)
uwsgi → protocole supporté nativement par Nginx
PSGI → standard Perl : $req = tableau 3 éléments
21 / 29
Identity Days 2023
22. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Modes de
raccordement
Plateformes SSO pour
les FSI
SSO as a Service
LL : :NG SSOaaS
Fonctionnement
Intégration Handler
Architecture DevOps
Template Nginx
Template Apache
Exemple ’rules.json’
CheckDevOps
RulesEditor
Handler DevOps
Comment ça marche ?
22 / 29
Identity Days 2023
23. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Modes de
raccordement
Plateformes SSO pour
les FSI
SSO as a Service
LL : :NG SSOaaS
Fonctionnement
Intégration Handler
Architecture DevOps
Template Nginx
Template Apache
Exemple ’rules.json’
CheckDevOps
RulesEditor
Handler DevOps
Template Nginx ⇒ Serveur uWSGI ou FastCGI
server {
listen port;
server_name myapp.domain.com; location ˜ ˆ(.*.php)$ {
auth_request /lmauth;
location = /lmauth { set $original_uri $uri$is_args$args;
internal; auth_request_set $lmremote_user $upstream_lmremote_user;
include /etc/nginx/uwsgi_params; auth_request_set $lmlocation $upstream_location;
# Pass authorization requests to error_page 401 $lmlocation;
# central uwsgi server include /etc/nginx/nginx-lua-headers.conf;
uwsgi_pass 10.1.2.3:9090;
uwsgi_param VHOSTTYPE DevOps; # Example with php-fpm
# Drop post datas include snippets/fastcgi-php.conf;
uwsgi_pass_request_body off; uwsgi_pass unix:/var/run/php/php7.0-fpm.sock;
uwsgi_param CONTENT_LENGTH ; }
# Set redirection parameters
uwsgi_param HTTPS_REDIRECT $https; location /rules.json {
uwsgi_param PORT_REDIRECT $server_port; auth_request off;
allow 10.1.2.3;
deny all;
# Set rules dynamically }
# (LL::NG will poll it every 10 mn)
uwsgi_param RULES_URL http://rulesserver/my.json;
}
}
23 / 29
Identity Days 2023
24. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Modes de
raccordement
Plateformes SSO pour
les FSI
SSO as a Service
LL : :NG SSOaaS
Fonctionnement
Intégration Handler
Architecture DevOps
Template Nginx
Template Apache
Exemple ’rules.json’
CheckDevOps
RulesEditor
Handler DevOps
Template Apache ⇒ Client FastCGI LemonLDAP::NG
VirtualHost port
ServerName myapp.domain.com Location /rules.json
DocumentRoot /var/www/myapp Order deny,allow
ErrorLog /var/log/apache2/localsite_error.log Deny from all
CustomLog /var/log/apache2/localsite_access.log combine Allow from 10.1.2.3
/Location
LocationMatch ˆ/(?!rules.json)
PerlHeaderParserHandler Lemonldap::NG::SSOaaS::Apache::Client
# Handler directive to declare this VHost as DevOps and
# Pass authorization requests to Central FastCGI server
PerlSetVar VHOSTTYPE DevOps
# or to declare DevOpsST handler
# PerlSetVar VHOSTTYPE DevOpsST
PerlSetVar LLNG_SERVER 10.1.2.3:9090
# Keep original hostname
PerlSetVar HOST HTTP_HOST
# Set redirection parameters
PerlSetVar HTTPS_REDIRECT HTTPS
PerlSetVar PORT_REDIRECT SERVER_PORT
PerlSetVar RULES_URL http://myapp.domain.com/rules.json
# or to use an external rules server
# PerlSetVar RULES_URL http://rulesserver/my.json;
/LocationMatch
/VirtualHost
24 / 29
Identity Days 2023
25. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Modes de
raccordement
Plateformes SSO pour
les FSI
SSO as a Service
LL : :NG SSOaaS
Fonctionnement
Intégration Handler
Architecture DevOps
Template Nginx
Template Apache
Exemple ’rules.json’
CheckDevOps
RulesEditor
Handler DevOps
Exemple fichier ’rules.json’
{
rules: {
ˆ/deny: deny,
ˆ/testno: $nigend !˜ /(?:173668|166380)/,
ˆ/api/: ($memberOf =˜ /bBDSP-GIPASP_([A-Z])b/)[0],
default: accept
},
headers: {
codeUnite: $codeUnite,
email: $mail,
grade: $rank,
nigend: $nigend,
nom: $sn,
prenom: $givenName,
profil: ($groups =˜ /bmyapp_(w+)b/i)[0] || ’’,
responsabilite: $responsabilite,
unite: $unite
}
}
25 / 29
Identity Days 2023
26. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Modes de
raccordement
Plateformes SSO pour
les FSI
SSO as a Service
LL : :NG SSOaaS
Fonctionnement
Intégration Handler
Architecture DevOps
Template Nginx
Template Apache
Exemple ’rules.json’
CheckDevOps
RulesEditor
Handler DevOps
Extension CheckDevOps
Validation syntaxe règles fichier ’rules.json’
26 / 29
Identity Days 2023
27. LL::NG
SSO as a Service
24 octobre 2023 –
Paris
christophe.maudoux
ANFSI
WebSSO LL : :NG
Modes de
raccordement
Plateformes SSO pour
les FSI
SSO as a Service
LL : :NG SSOaaS
Fonctionnement
Intégration Handler
Architecture DevOps
Template Nginx
Template Apache
Exemple ’rules.json’
CheckDevOps
RulesEditor
Handler DevOps
Extension RulesEditor
Génération fichier ’rules.json’ (développée par Sébastien Bois)
27 / 29
Identity Days 2023
28. Merci de votre attention !
, Gardons le contact. . . ,
christophe.maudoux@gendarmerie.interieur.gouv.fr
admin-sso@gendarmerie.interieur.gouv.fr
Site officiel https://lemonldap-ng.org
Versions https://releases.ow2.org/lemonldap
Forge https://gitlab.ow2.org/lemonldap-ng