2
Clément OUDOT
@clementoudot
http://sflx.ca/coudot
● Créé en 1999
● >100 personnes
● Montréal, Quebec City, Ottawa, Paris...
3
Sommaire
1.France Connect, à quoi ça sert ?
2.Le protocole OpenID Connect
3.Utilisation avec le logiciel libre LemonLDAP...
4
À quoi ça sert ?
5
Un service d'authentification
● FranceConnect ne fournit pas directement
l'authentification, mais s'appuie sur des fourn...
6
7
Consulter les points de son permis
8
Site service-public.fr
9
Identité pivot (particulier)
Champs Type Description
given_name string prénoms séparés par des espaces (standard OpenIDC...
10
Identité pivot (entreprise)
Champs Type Description
given_name string prénoms séparés par des espaces (standard OpenIDC...
11
Le protocole
12
13
Rôles
Resource owner
(end-user)
Client
(third-party)
Authorization
Server
Resource
Server
14
Authorization Request
Authorization Grant
Authorization Grant
Access Token
Access Token
Protected Resource
15
Authorization
GET /authorize?
response_type=code&client_id=s6BhdRkqt3&st
ate=xyz&redirect_uri=https%3A%2F%2Fclient
%2Ee...
16
Token
POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic
czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: app...
17
Token
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"access_t...
18
Resource
GET /resource/1 HTTP/1.1
Host: example.com
Authorization: Bearer 2YotnFZFEjr1zCsicMWpAA
19
20
OpenID 1.0 OpenID 2.0 OpenID Connect
21
RPRP OPOP
(1) AuthN Request
(2) AuthN & AuthZ
(3) AuthN Response
(4) UserInfo Request
(5) UserInfo Response
22
OpenID Connect Protocol Suite
Core Discovery
Dynamic Client
Registration
Session
Management
Form Post
Response Mode
Min...
23
Underpinnings
OAuth 2.0
Core
OAuth 2.0
Bearer
OAuth 2.0
Assertions
OAuth 2.0
JWT Profile
OAuth 2.0
Responses
JWT JWS JW...
24
http://jwt.io/
25
RPRP OPOP
http://auth.example.com/oauth2/authorize?
response_type=code
&client_id=lemonldap
&scope=openid%20profile%20e...
26
27
28
RPRP OPOP
http://auth.example.com/oauth2.pl?
openidconnectcallback=1;
code=f6267efe92d0fc39bf2761c29de44286;
state=ABCD...
29
RPRP OPOP
POST /oauth2/token HTTP/1.1
Host: auth.example.com
Authorization: Basic xxxx
Content-Type: application/x-www-...
30
RPRP OPOP
{"id_token" :"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ
9.eyJhY3IiOiJsb2EtMiIsImF1dGhfdGltZSI6MTQzMjEx
MzU5MywiaWF0...
31
{
"acr": "loa-2",
"auth_time": 1432113593,
"iat": 1432113966,
"at_hash": "9axzsNi9pNDk5zWefKsM6A",
"iss": "http://auth....
32
RPRP OPOP
POST /oauth2/userinfo HTTP/1.1
Host: auth.example.com
Authorization: Bearer 512cdb7b97e073d0656ac9684cc715fe
...
33
RPRP OPOP
{
"name": "Clément OUDOT",
"email": "clement@oudot.me",
"sub": "clement@oudot.me"
}
34
Utilisation avec le
logiciel libre
35
LemonLDAP::NG
● Logiciel libre (GPLv2+) / OW2 consortium
● Authentification unique (SSO), contrôle d'accès
● Fournisseu...
36
37
Lien LL::NG / FranceConnect
● LemonLDAP::NG peut être configuré comme SP OpenID
Connect
● France Connect peut être décl...
38
Des questions ?
On dirait qu'ils
ont tout compris
[JDLL 2016] OpenID Connect et FranceConnect
Prochain SlideShare
Chargement dans…5
×

[JDLL 2016] OpenID Connect et FranceConnect

946 vues

Publié le

FranceConnect, à quoi ça sert ? Description du protocole OpenID Connect et implémentation dans LemonLDAP::NG

Publié dans : Technologie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
946
Sur SlideShare
0
Issues des intégrations
0
Intégrations
42
Actions
Partages
0
Téléchargements
15
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

[JDLL 2016] OpenID Connect et FranceConnect

  1. 1. 2 Clément OUDOT @clementoudot http://sflx.ca/coudot ● Créé en 1999 ● >100 personnes ● Montréal, Quebec City, Ottawa, Paris ● ISO 9001:2004 / ISO 14001:2008 ● contact@savoirfairelinux.com
  2. 2. 3 Sommaire 1.France Connect, à quoi ça sert ? 2.Le protocole OpenID Connect 3.Utilisation avec le logiciel libre LemonLDAP::NG
  3. 3. 4 À quoi ça sert ?
  4. 4. 5 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
  5. 5. 6
  6. 6. 7 Consulter les points de son permis
  7. 7. 8 Site service-public.fr
  8. 8. 9 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
  9. 9. 10 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)
  10. 10. 11 Le protocole
  11. 11. 12
  12. 12. 13 Rôles Resource owner (end-user) Client (third-party) Authorization Server Resource Server
  13. 13. 14 Authorization Request Authorization Grant Authorization Grant Access Token Access Token Protected Resource
  14. 14. 15 Authorization GET /authorize? response_type=code&client_id=s6BhdRkqt3&st ate=xyz&redirect_uri=https%3A%2F%2Fclient %2Eexample%2Ecom%2Fcb https://client.example.com/cb? code=SplxlOBeZQQYbYS6WxSbIA &state=xyz
  15. 15. 16 Token POST /token HTTP/1.1 Host: server.example.com Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW Content-Type: application/x-www-form- urlencoded grant_type=authorization_code&code=SplxlOBe ZQQYbYS6WxSbIA&redirect_uri=https%3A%2F %2Fclient%2Eexample%2Ecom%2Fcb
  16. 16. 17 Token HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 Cache-Control: no-store Pragma: no-cache { "access_token":"2YotnFZFEjr1zCsicMWpAA", "token_type":"example", "expires_in":3600, "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA", "example_parameter":"example_value" }
  17. 17. 18 Resource GET /resource/1 HTTP/1.1 Host: example.com Authorization: Bearer 2YotnFZFEjr1zCsicMWpAA
  18. 18. 19
  19. 19. 20 OpenID 1.0 OpenID 2.0 OpenID Connect
  20. 20. 21 RPRP OPOP (1) AuthN Request (2) AuthN & AuthZ (3) AuthN Response (4) UserInfo Request (5) UserInfo Response
  21. 21. 22 OpenID Connect Protocol Suite Core Discovery Dynamic Client Registration Session Management Form Post Response Mode Minimal Dynamic Complete
  22. 22. 23 Underpinnings 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
  23. 23. 24 http://jwt.io/
  24. 24. 25 RPRP OPOP http://auth.example.com/oauth2/authorize? response_type=code &client_id=lemonldap &scope=openid%20profile%20email &redirect_uri=http%3A%2F %2Fauth.example.com%2Foauth2.pl %3Fopenidconnectcallback%3D1 &state=ABCDEFGHIJKLMNOPQRSTUVWXXZ
  25. 25. 26
  26. 26. 27
  27. 27. 28 RPRP OPOP http://auth.example.com/oauth2.pl? openidconnectcallback=1; code=f6267efe92d0fc39bf2761c29de44286; state=ABCDEFGHIJKLMNOPQRSTUVWXXZ
  28. 28. 29 RPRP OPOP POST /oauth2/token HTTP/1.1 Host: auth.example.com Authorization: Basic xxxx Content-Type: application/x-www-form-urlencoded grant_type=authorization_code &code=f6267efe92d0fc39bf2761c29de44286 &redirect_uri=http%3A%2F%2Fauth.example.com %2Foauth2.pl%3Fopenidconnectcallback%3D1
  29. 29. 30 RPRP OPOP {"id_token" :"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ 9.eyJhY3IiOiJsb2EtMiIsImF1dGhfdGltZSI6MTQzMjEx MzU5MywiaWF0IjoxNDMyMTEzOTY2LCJhdF9oYXNo IjoiOWF4enNOaTlwTkRrNXpXZWZLc002QSIsImlzcy I6Imh0dHA6Ly9hdXRoLmV4YW1wbGUuY29tLyIsIm V4cCI6IjM2MDAiLCJhenAiOiJsZW1vbmxkYXAiLCJub 25jZSI6IjEyMzQ1Njc4OTAiLCJzdWIiOiJjb3Vkb3RAbG luYWdvcmEuY29tIiwiYXVkIjpbImxlbW9ubGRhcCJdf Q==.daYGlzIr37dC1R0biIwdvQLM1LlCMsBFFcEufe MZtXsZvCiiAm-1LFJwJJJDHFOhd- WQnc9_GvtP3gTabXB8U4gQ2IW- bPNLUsjT24njmBPYunHy8YTQ5PV- QnQI5EK5WrrTS04AF86U5Qu6m3b27yWKFXkIuGI7 EUvvByv8L1Anh1gPG3il5cEOnMFHIUzAaC6PkJiy1sj SBM53nLRAf9NQ6eux4iCVBIRwl26CCgmRTsTRy- iTxB3bf0LrILohUlAR_- HPWGseaIAMvqUpGeaovgGDPt4Zip9KERo7368ykg Qc09VFlLvZIwyMTWQdVBIYdW0oY6eI9ZHjofn0mg" , "expires_in" : "3600","access_token" : "512cdb7b97e073d0656ac9684cc715fe", "token_type" : "Bearer"}
  30. 30. 31 { "acr": "loa-2", "auth_time": 1432113593, "iat": 1432113966, "at_hash": "9axzsNi9pNDk5zWefKsM6A", "iss": "http://auth.example.com/", "exp": "3600", "azp": "lemonldap", "nonce": "1234567890", "sub": "clement@oudot.me", "aud": [ "lemonldap" ] } ID Token payload
  31. 31. 32 RPRP OPOP POST /oauth2/userinfo HTTP/1.1 Host: auth.example.com Authorization: Bearer 512cdb7b97e073d0656ac9684cc715fe Content-Type: application/x-www-form-urlencoded
  32. 32. 33 RPRP OPOP { "name": "Clément OUDOT", "email": "clement@oudot.me", "sub": "clement@oudot.me" }
  33. 33. 34 Utilisation avec le logiciel libre
  34. 34. 35 LemonLDAP::NG ● Logiciel libre (GPLv2+) / OW2 consortium ● Authentification unique (SSO), contrôle d'accès ● Fournisseur de Service / Fournisseur d'Identité ● Perl/Apache/CGI/FCGI ● Réinitialisation de mot de passe et création de compte ● http://www.lemonldap-ng.org
  35. 35. 36
  36. 36. 37 Lien LL::NG / FranceConnect ● LemonLDAP::NG peut être configuré comme SP OpenID Connect ● France Connect peut être déclaré comme IDP OpenID Connect ● Procédure détaillée : http://lemonldap-ng.org/documentation/latest/authopen idconnect_franceconnect ● Démonstration : https://auth.openid.club/
  37. 37. 38 Des questions ? On dirait qu'ils ont tout compris

×