Connecteur - OAuth 2.0 - SSO et API
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
- 1 Démarche
- 2 1 - Choisir un flot d’authentification OAuth2
- 3 2 - Enregistrer l’application cliente sur la plateforme Édifice
- 4 3 - Récupérer un jeton (access_token) OAuth2 pour votre application client
- 4.1 Authorization Code
- 4.2 Resource Owner Passwword
- 4.2.1 1 - Récupérer le token
- 4.3 Client Credential
- 4.4 JWT Bearer
- 5 4 - Accéder à une ressource de l’utilisateur depuis l’application cliente
Démarche
Ce document propose un démarche d'intégration SSO (Single Sign-On) d’une application tiers en s’appuyant sur le protocole OAuth 2.0
1 - Choisir un flot d’authentification OAuth2
La plateforme Édifice propose un serveur OAuth2 qui supporte les flots (aka grant type) suivants :
Authorization Code : https://oauth.net/2/grant-types/authorization-code/
Resource Owner Passwword : https://oauth.net/2/grant-types/password/
Client Credential :https://oauth.net/2/grant-types/client-credentials/
Jwt bearer : RFC 7523: JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants
Le flot Authorization Code est le plus couramment utilisé
2 - Enregistrer l’application cliente sur la plateforme Édifice
Si vous êtes un éditeur ou un exploitant d’application, demandez au Support Édifice d’enregistrer votre application
Depuis la console d(administration d’une plateforme Édifice créer un connecteur de type OAuth2
Champs à configurer :
"Identitifiant" (clientId oAuth2)
"URL" (URL de service cible)
"Transmettre la session" (configure automatiquement le scope userinfo)
"Scope" (autorisations d'accès aux données utilisateurs de l'application externe)
"Mode d'identification" (utiliser "code" pour une application web et "password" pour une application mobile)
Code secret" (secret oAuth2).
Informations à transmettre à l'éditeur de l'application cliente :
l'URL du récupération du code temporaire : https://domaine.ent/auth/oauth2/code
l'URL du récupération du token : https://domaine.ent/auth/oauth2/token
l'URL du récupération des information utilisateur : https://domaine.ent/auth/oauth2/userinfo
le clientId (champs "Identifiant")
le secret (champs "Code Secret")
le scope (champs "Scope")
Informations à récupérer de l'éditeur de l'application cliente
URL de service ( à renseigner dans le champs "URL")
3 - Récupérer un jeton (access_token) OAuth2 pour votre application client
Pour récupérer un jeton, suivre la procédure qui correspond au grant type choisi :
Authorization Code : https://oauth.net/2/grant-types/authorization-code/
Resource Owner Passwword : https://oauth.net/2/grant-types/password/
Client Credential :https://oauth.net/2/grant-types/client-credentials/
Jwt bearer : RFC 7523: JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants
Authorization Code
1 : Récupérer code de génération du token
Dans un navigateur, entrer l'adresse :
https://domaine.ent/auth/oauth2/auth?response_type=code&state=blip&scope=userinfo&client_id=duck&redirect_uri=http://duckduckgo.com |
Si l'utilisateur n'est pas connecté alors la plateforme Édifice redirige le navigateur vers la mire connexion
Si l'utilisateur est connecté alors la plateforme Édifice le redirige vers l'URL de service avec le code en paramètre :
https://www.duckduckgo.com/?code=9ddf3256-7e5d-4708-a121-dfbe5f6dba75&state=blip |
2 - Récupérer le token
curl -i -X POST -H "Authorization:Basic ZmFxMnNjaWVuY2VzOmZhcTJzY2llbmNlcy1zZWNyZXQ=" -H "Content-Type:application/x-www-form-urlencoded" -H "Accept:application/json; charset=UTF-8" -d "grant_type=authorization_code&code=9ddf3256-7e5d-4708-a121-dfbe5f6dba75&redirect_uri=http%3A%2F%2Fduckduckgo.com" https://domaine.ent/auth/oauth2/token |
En cas de succes le serveur oAuth2 de l'ENT transmet le token
Resource Owner Passwword
1 - Récupérer le token
En cas de succes le serveur oAuth2 de l'ENT transmet le token
Client Credential
JWT Bearer
Via les informations du JWT il est possible d’obtenir les informations authentification
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
En cas de succes le serveur OAuth2 de l'ENT transmet l’Access Token
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
En cas de succès le serveur OAuth2 de l'ENT transmet la ressource de l’utilisateur demandée