Configurer et utiliser les applications OAuth2 personnalisées de votre organisation à l’aide du flux PKCE
PKCE est un flux d’autorisation sécurisé qui fonctionne bien avec les applications à actualisation dynamique, telles que les applications mobiles, mais qui est utile pour tous les clients OAuth2. Au lieu d’utiliser un secret client statique, PKCE emploie une chaîne générée dynamiquement, éliminant ainsi le risque de fuite d’un secret client.
Vue d’ensemble de PKCE
Un flux PKCE comprend les étapes suivantes. Les étapes de cette section sont présentées à titre d’information uniquement. Pour effectuer ces procédures, reportez-vous aux autres sections de cet article.
-
Le client crée
code_challengeen transformantcode_verifierà l’aide d’un chiffrementS256. -
Le client dirige le navigateur vers la page de connexion OAuth2, avec le
code_challengegénéré. Vous devez enregistrer votre application (client) afin qu’OAuth2 puisse accepter la demande d’autorisation. Après l’enregistrement, votre application peut rediriger le navigateur vers OAuth2. -
Le serveur d’autorisation OAuth2 redirige l’invite d’authentification vers l’utilisateur ou l’utilisatrice.
-
La personne s’authentifie à l’aide de l’une des options de connexion configurées. Une page de consentement répertoriant les autorisations qu’OAuth2 accordera à l’application peut s’afficher.
-
OAuth2 redirige vers votre application avec un
authorization code. -
Votre application envoie ce code, conjointement au
code_verifier, à OAuth2. -
Le serveur d’autorisation OAuth2 transforme le
code_verifieren utilisant lacode_challenge_methodà partir de la demande d’autorisation initiale et vérifie le résultat par rapport aucode_challenge. Si la valeur des deux chaînes correspond, cela signifie que le serveur a vérifié que les requêtes provenaient du même client et qu’il émettra unaccess token. -
OAuth2 renvoie le
access token, et éventuellement unrefresh token. -
Votre application peut désormais utiliser ces jetons pour appeler le serveur de ressources, tel qu’une API, au nom de l’utilisateur ou l’utilisatrice.
-
Le serveur de ressources valide le jeton avant de répondre à la requête.
Configurer votre application
Avant de pouvoir implémenter l’autorisation, vous devez enregistrer votre application dans OAuth2 en créant une intégration d’application à partir de Workfront.
Pour obtenir des instructions sur la création de l’application OAuth2, voir la section Créer une application web OAuth2 d’une seule page à l’aide de PKCE dans Créer des applications OAuth2 pour les intégrations Workfront.
Créer la clé d’épreuve pour l’échange de code
Tout comme le flux de code d’autorisation standard, votre application commence par rediriger le navigateur de l’utilisateur ou l’utilisatrice vers le point d’entrée /authorize du serveur d’autorisation. Cependant, dans ce cas, vous devez également transmettre un code_challenge.
Votre première étape consiste à générer un code_verifier et un code_challenge.
Vous devez ajouter du code dans l’application de votre client pour créer le code_verifier et le code_challenge.
Le code de générateur PKCE crée une sortie similaire à ce qui suit :
| code language-none |
|---|
|
votre application enregistre le code_verifier pour plus tard, et envoie le code_challenge avec la demande d’autorisation à l’URL /authorize de votre serveur d’autorisation.
Demander un code d’autorisation
Si vous utilisez le serveur d’autorisation personnalisé par défaut, l’URL de votre demande est similaire à ce qui suit :
| code language-none |
|---|
|
Notez les paramètres qui sont transmis :
-
client_idcorrespond à l’ID client de l’application OAuth2 que vous avez créé dans lors de la configuration de l’application.Pour obtenir des instructions, voir la section Créer une application web OAuth2 d’une seule page à l’aide de PKCE dans Créer des applications OAuth2 pour les intégrations Workfront.
-
response_typeestcode, car l’application utilise le type d’octroi Code d’autorisation . -
redirect_uriest l’emplacement de rappel vers lequel l’agent utilisateur est dirigé avec lecode. Il doit correspondre à l’un des URI de redirection que vous avez spécifiés lors de la création de votre application OAuth2. -
code_challenge_methodest la méthode de hachage utilisée pour générer le défi, qui est toujoursS256pour les applications Workfront Oauth2 qui utilisent PKCE. -
code_challengeest le défi de code utilisé pour PKCE.
Échanger le code contre des jetons
Pour échanger le code d’autorisation contre un jeton d’accès, transmettez-le au point d’entrée /token de votre serveur d’autorisation, accompagné du code_verifier.
| code language-none |
|---|
|
Notez les paramètres qui sont transmis :
-
Le
grant_typeestauthorization_code, car l’application utilise le type d’octroi Code d’autorisation. -
redirect_uridoit correspondre à l’URI utilisé pour obtenir le code d’autorisation. -
codeest le code d’autorisation que vous avez reçu du point d’entrée /authorize. -
code_verifierest le code_verifier PKCE que votre application a généré dans Créer la clé de vérification pour l’échange de code. -
client_ididentifie le client et doit correspondre à la valeur préenregistrée dans OAuth2.
Si le code est toujours valide et que le code_verifier correspond, votre application reçoit un jeton d’accès.
| code language-none |
|---|
|
Valider le jeton d’accès
Lorsque votre application transmet une requête avec un jeton d’accès, le serveur de ressources doit le valider.
Vous pouvez valider votre jeton d’accès à l’aide d’un appel API similaire au suivant :
| code language-none |
|---|
|
Demander un jeton d’actualisation
Pour demander un jeton d’actualisation, vous pouvez effectuer un appel POST à l’API, comme suit :
| code language-none |
|---|
|