Etape 2 - Générer un access token
Ce point d'accès permet à votre application d'échanger un authorization code
contre un access token
. Ce dernier est utilisé pour tous les échanges entre votre application et l'API afin d'accéder aux données.
Remarques :
Afin de s'assurer de la provenance des échanges (anti-faille CSRF), votre application doit vérifier que le paramètre nonce
reçu est identique à celui généré préalablement par votre application lors de l'appel au point d'accès d'authentification.
Vous devez également valider la valeur de l’access token
et de l’id token
selon les principes OpenID Connect pour s’assurer que l’émetteur est bien Pôle emploi et que son contenu n’a pas été altéré pendant le transport.
Consultez la page Sécurité et vérification pour plus d'informations.
Description de la requête
Point d'accès :
Population d'utilisateurs | URL | Royaume |
---|---|---|
Demandeurs d'emploi et candidats | POST https://authentification-candidat.pole-emploi.fr/connexion/oauth2/access_token | /individu |
Entreprises et recruteurs | POST https://entreprise.pole-emploi.fr/connexion/oauth2/access_token | /employeur |
Détail des paramètres à valoriser :
Paramètre(s) | Valeur |
---|---|
realm |
Warning : Le "realm" doit être passé en paramètre GET, et pas dans le body. |
En-tête(s) | Valeur |
Content-Type | application/x-www-form-urlencoded |
Corps de la requête | Valeur |
grant_type | authorization_code |
code | Valeur de l'authorization code |
client_id | Votre identifiant client |
client_secret | Votre clé secrète |
redirect_uri | URL de redirection passée lors de la demande d'authentification de l'utilisateur (étape 1) |
Exemple d'appel :
POST /connexion/oauth2/access_token?realm=%2Findividu
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&code=[authorization code]
&client_id=[identifiant client]
&client_secret=[clé secrète]
&redirect_uri=[URL de redirection]
Description de la réponse
En-tête(s) | Valeur |
---|---|
Content-Type | application/json;charset=UTF-8 |
Cache-Control | no-store |
Pragma | no-cache |
Corps de la réponse | Valeur |
scope | Liste des scopes techniques et applicatifs demandés |
expires_in | Durée de vie de l'access token (en seconde) |
token_type | Bearer |
access_token | Valeur de l'access token généré |
id_token | Valeur de l'id token généré (requis pour déconnecter l'utilisateur) |
refresh_token | Ce jeton n'est pas utilisé par la cinématique proposée par Pôle emploi |
nonce | Identique à celui fourni lors de l'appel du point d'accès d'authentification |
Exemple de retour :
HTTP 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"scope": "application_[identifiant client] api_peconnect-individuv1 openid profile email",
"expires_in": 59,
"token_type": "Bearer",
"access_token": "[valeur de l'access token généré]",
"id_token": "[valeur de l'id token généré]",
"refresh_token": "[valeur du refresh token généré]",
"nonce": "[nonce]"
}
Cas d'erreurs possibles
Identifiant client et/ou clé secrète erroné ou absent :
HTTP 400 Bad Request
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
"error": "invalid_client",
"error_description": "Client authentication failed"
}
Code d'authentification erroné ou absent :
HTTP 400 Bad Request
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
"error": "invalid_grant",
"error_description": "The provided access grant is invalid, expired, or revoked."
}
URI de redirection erronée ou absente :
HTTP 400 Bad Request
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
"error": "redirect_uri_mismatch",
"error_description": "The redirection URI provided does not match a pre-registered value."
}
Mauvaise cinématique OAuth :
HTTP 400 Bad Request
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
"error": "unsupported_grant_type",
"error_description": "Grant type is not supported: client_credentials"
}