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_challenge
en transformantcode_verifier
à l’aide d’un chiffrementS256
. -
Le client dirige le navigateur vers la page de connexion OAuth2, avec le
code_challenge
gé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_verifier
en 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_id
correspond à l’identifiant du client de l’application OAuth2 que vous avez créée 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.
-
Le
response_type
estcode
, car l’application utilise le type d’octroi Code d’autorisation. -
redirect_uri
est l’emplacement de rappel vers lequel l’agent de l’utilisateur ou l’utilisatrice est dirigé en même temps que 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_method
est la méthode de hachage utilisée pour générer le code_challenge, qui est toujoursS256
pour les applications Workfront Oauth2 qui utilisent PKCE. -
code_challenge
est le code_challenge 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_type
estauthorization_code
, car l’application utilise le type d’octroi Code d’autorisation. -
redirect_uri
doit correspondre à l’URI utilisé pour obtenir le code d’autorisation. -
code
est le code d’autorisation que vous avez reçu du point d’entrée /authorize. -
code_verifier
est 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_id
identifie 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 |
---|
|