Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Info

Pré-requis

  • Être familier des notions de Single Sign-On (SSO) et plus particulièrement OAuth2

  • Connaitre les bases du protocoles HTTP (query parameter, GET / POST, en-têtes)

  • Savoir utiliser un client HTTP tel que cURL ou un plugin navigateur équivalent 

...

La plateforme Édifice propose un serveur OAuth2 qui supporte les "flots" suivant flots (aka grant type) suivants :

...

  • URL de service ( à renseigner dans le champs "URL")

3

...

- Récupérer un jeton (access_token) OAuth2 pour votre application client

Voici la procédure de test, une fois le paramétrage réalisé, il consiste à simuler l'ensemble des requêtes nécessaire à l'obtention des données de l'usager connecté.Pour récupérer un jeton, suivre la procédure qui correspond au grant type choisi :

Authorization Code

1 : Récupérer code de génération du token 

...

Bloc de code
HTTP/1.1 200 OK
      Content-Type: application/json

      {"token_type":"Bearer","access_token":"1413b31c-b240-453a-bc1e-3773cd31adc9","refresh_token":"9e746d64-3fa8-4ff8-88b3-2d8314f56179","expires_in":3600,"scope":"userinfo"}

3 : Accéder à une ressource de l’utilisateur depuis l’application cliente

Dans cet exemple nous collectons des informations d’identités de l’utilisateurs sur le endpoints /userinfo

Bloc de codecurl -i -H "Authorization:Bearer 7acb83b1­53bd­4105­9b46­5acfb095158f" https://domaine.ent/auth/oauth2/userinfo
Remarque

Dans l'en-tête "Authorization:Bearer " il faut passer le token

En cas de succès le serveur OAuth2 de l'ENT transmet la ressource de l’utilisateur demandée

...

Bloc de code
HTTP/1.1 200 OK
Content-Type: application/json

{
    "level":"",
    "login":"severine.alexandre",
    "lastName":"ALEXANDRE",
    "firstName":"SEVERINE",
    "externalId":"5555959",
    "username":"SEVERINE ALEXANDRE",
    "type":"ENSEIGNANT",
    "childrenIds":[],
    "uai":["0805432C"],
    "userId":"2bacdfd2-b59c-4b21-a23e-f6346e02fc4a",
    "classId":"55567$3ARMS",
    "schoolName":"Collège Denis Poisson"
}

Resource Owner Passwword

1 - Récupérer le token

...

Bloc de code
HTTP/1.1 200 OK
      Content-Type: application/json

      {"token_type":"Bearer","access_token":"1413b31c-b240-453a-bc1e-3773cd31adc9","refresh_token":"9e746d64-3fa8-4ff8-88b3-2d8314f56179","expires_in":3600,"scope":"userinfo"}

3 - Accéder à une ressource de l’utilisateur depuis l’application cliente

Dans cet exemple nous collectons des informations d’identités de l’utilisateurs sur le endpoints /userinfo

...

Bloc de code
curl ­-i ­-H "Authorization:Bearer 7acb83b1­53bd­4105­9b46­5acfb095158f" https://domaine.ent/auth/oauth2/userinfo 
Remarque

Dans l'en-tête "Authorization:Bearer " il faut passer le token

En cas de succes le serveur OAuth2 de l'ENT transmet la ressource de l’utilisateur démandée

...

Bloc de code
HTTP/1.1 200 OK
Content-Type: application/json

{
    "level":"",
    "login":"severine.alexandre",
    "lastName":"ALEXANDRE",
    "firstName":"SEVERINE",
    "externalId":"5555959",
    "username":"SEVERINE ALEXANDRE",
    "type":"ENSEIGNANT",
    "childrenIds":[],
    "uai":["0805432C"],
    "userId":"2bacdfd2-b59c-4b21-a23e-f6346e02fc4a",
    "classId":"55567$3ARMS",
    "schoolName":"Collège Denis Poisson"
}

...

Client Credential

Remarque

A DOCUMENTER

JWT Bearer

Via les informations du JWT il est possible d’obtenir les informations authentification :

Astuce

Documentation officielle :

https://datatracker.ietf.org/doc/html/rfc7523

...

0 - Configurer l’URL du certificat (la clé publique) de l'

...

application cliente

...

Renseigner le champs "URL du certificat"

...

dans fiche connecteur

...

...

1 - Récupérer le token

Bloc de code
languageyaml
curl --location --request POST 'https://domaine.ent/auth/oauth2/token' \
    --data-urlencode 'grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer' \
    --data-urlencode 'redirect_uri=https://www.duckduckgo.com' \
    --data-urlencode 'client_id={YOUR_CLIENT_ID}' \
    --data-urlencode 'client_secret={YOUR_SECRET}' \
    --data-urlencode 'assertion={YOUR_JSON_WEB_TOKEN}' \
    --data-urlencode 'scope={SCOPE}'

3 - En cas de succes le serveur OAuth2 de l'ENT transmet l’Access Token

Bloc de code
languagejson
{
    "token_type": "Bearer",
    "access_token": "5459a598-72f0-482c-b54a-fd44e92af5da",
    "expires_in": 3600,
    "scope": "email userinfo"
}

4 - Accéder à une ressource de l’utilisateur depuis l’application cliente

Dans cet exemple nous collectons des informations d’identités de l’utilisateurs sur le endpoints /userinfo

Bloc de code
curl -i -H "Authorization:Bearer 7acb83b1­53bd­4105­9b46­5acfb095158f" https://domaine.ent/auth/oauth2/userinfo 
Remarque

Dans l'en-tête "Authorization:Bearer " il faut passer le token

En cas de succès le serveur OAuth2 de l'ENT transmet la ressource de l’utilisateur demandée

Bloc de code
HTTP/1.1 200 OK
Content-Type: application/json

{
    "level":"",
    "login":"severine.alexandre",
    "lastName":"ALEXANDRE",
    "firstName":"SEVERINE",
    "externalId":"5555959",
    "username":"SEVERINE ALEXANDRE",
    "type":"ENSEIGNANT",
    "childrenIds":[],
    "uai":["0805432C"],
    "userId":"2bacdfd2-b59c-4b21-a23e-f6346e02fc4a",
    "classId":"55567$3ARMS",
    "schoolName":"Collège Denis Poisson"
}