# OAuth 2.0 Utilisez la norme OAuth 2.0 pour authentifier les requêtes à l'API Stripe au nom de vos utilisateurs. Un utilisateur qui s’authentifie avec OAuth suit ces étapes. 1. Sur votre site, l’utilisateur clique sur un lien qui le redirige vers Stripe. 1. Sur Stripe, l’utilisateur sélectionne le compte approprié et accepte les autorisations pour l’installation de votre application. 1. Une fois l’application installée, l’authentification est terminée et l’utilisateur est redirigé vers un URI défini. ![Installer une application avec OAuth](https://b.stripecdn.com/docs-statics-srv/assets/oauth-user-journey.0fd6041638a1cbb305dc88690354a462.png) ## Développer votre application 1. [Créez votre application Stripe](https://docs.stripe.com/stripe-apps/create-app.md#create-app) en exécutant `stripe apps create` dans l’interface de ligne de commande. 1. Modifiez les champs suivants dans le [manifeste de l’application](https://docs.stripe.com/stripe-apps/reference/app-manifest.md) : - Définissez `stripe_api_access_type` sur `oauth`. - Définissez `distribution_type` sur `public`. - Définissez votre `allowed_redirect_uris` . Il s’agit des URL vers lesquelles les utilisateurs sont redirigés après l’installation de votre application à l’aide d’OAuth. La première dans la liste est utilisée comme URL de redirection par défaut. Le manifeste de votre application doit ressembler à ce qui suit : ```json { "id": "com.example.my-app", "version": "0.0.1", "name": "Your Stripe App", "icon": "./[YOUR_APP]_icon_32.png", "permissions": [ // Your app permissions here ],"stripe_api_access_type": "oauth", "distribution_type": "public", "allowed_redirect_uris": [ // Your redirect URIs here ] } ``` 1. Ajoutez toutes les [autorisations](https://docs.stripe.com/stripe-apps/reference/permissions.md) requises par votre application. 1. *(Facultatif)* Ajoutez des [extensions d’interface utilisateur](https://docs.stripe.com/stripe-apps/build-ui.md) à votre application. Nous vous recommandons d’ajouter une [vue des paramètres](https://docs.stripe.com/stripe-apps/app-settings.md) pour permettre à vos utilisateurs de configurer les paramètres ou de créer un lien vers la documentation de votre application. 1. [Chargez](https://docs.stripe.com/stripe-apps/upload-install-app.md) votre application sur Stripe. ```bash stripe apps upload ``` ## Tester votre application 1. Accédez à la page des détails de votre application. 1. Ouvrez l’onglet **Test externe** et cliquez sur **Démarrer** pour configurer un [test externe](https://docs.stripe.com/stripe-apps/test-app.md). 1. Accédez aux liens d’autorisation situés dans la section **Tester OAuth**. Vous pouvez utiliser ce lien pour effectuer des tests avec différents comptes. ## Créer votre lien d'installation OAuth Depuis votre page Web, redirigez vers votre lien d’installation OAuth avec les paramètres suivants : `https://marketplace.stripe.com/oauth/v2/authorize?client_id=${clientId}&redirect_uri=${redirectUrl}&state=${state}`. Stripe génère des liens distincts pour les modes production et test. Vous trouverez ces liens dans l’onglet **Test externe**. ![L'emplacement des liens de test OAuth dans le Dashboard Stripe](https://b.stripecdn.com/docs-statics-srv/assets/test-oauth-links.a5b8e31857cfe1a8d6b356f89738ff5d.png) > Afin d’éviter toute attaque CSRF, ajoutez le paramètre recommandé `state` et transmettez un token unique comme valeur. Nous incluons le paramètre `state` que vous avez fourni lorsque nous redirigeons l’utilisateur vers votre site. Votre site peut confirmer que le paramètre `state` n’a pas été modifié. Pour en savoir plus, consultez les [paramètres des URL](https://docs.stripe.com/stripe-apps/api-authentication/oauth.md#url-parameters). ## Publier votre application [Soumettez votre application pour vérification](https://docs.stripe.com/stripe-apps/publish-app.md#submit-app-for-review) lorsqu’elle sera prête à être publiée sur Stripe App Marketplace Lorsque vous soumettez une application OAuth pour vérification, vous devez fournir l’URL d’installation de la place de place de marché. Cette URL doit renvoyer vers une page permettant de lancer le processus d’inscription et d’installation à l’aide d’instructions claires en utilisant les liens d’installation OAuth de l’étape précédente. Assurez-vous que l’URL d’installation que vous fournissez à App Review utilise les liens OAuth publics de l’onglet **Paramètres**. Ce lien n’est pas le même que celui de l’onglet **Test externe**. ![L'emplacement des liens OAuth publics dans le Dashboard Stripe](https://b.stripecdn.com/docs-statics-srv/assets/public-oauth-links.510f38d240869e2ebf88ad5ee3b97625.png) > Les liens d’installation OAuth publics ne fonctionnent pas tant que l’application n’est pas publiée. Cependant, notre équipe de vérification des applications peut installer et tester votre application via ces liens. ## Installer votre application et l'autoriser 1. Dans votre navigateur, ouvrez votre lien d’installation OAuth. Vous pouvez ajuster les paramètres de requête pour remplacer l’URL de redirection par une URL prise en charge par l’application. 1. Affichez et acceptez les autorisations pour installer l’application. Une fois l’installation terminée, l’utilisateur est redirigé vers la première URL de rappel que vous avez définie dans le manifeste de l’application, sauf si vous avez spécifié un [paramètre d’URL](https://docs.stripe.com/stripe-apps/api-authentication/oauth.md#url-parameters). ## Échanger le code d'autorisation contre un token d'accès Votre URL de rappel reçoit un paramètre OAuth [code d’autorisation](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.1) que votre back-end doit échanger contre un token d’accès à l’API et un token d’actualisation. Ce code d’autorisation à usage unique est valable durant 5 minutes, au cours desquelles votre back-end doit échanger le code contre le token d’accès. Voici la commande que le code de votre backend doit déployer à l’aide d’une [bibliothèque client](https://oauth.net/code/) OAuth. ```bash curl -X POST https://api.stripe.com/v1/oauth/token \ -u sk_live_***: \ -d code=ac_*** \ -d grant_type=authorization_code ``` Vous devrez utiliser la clé API pour développeur d’application pour le type de lien utilisé durant l’[étape d’installation](https://docs.stripe.com/stripe-apps/api-authentication/oauth.md#install-app). | Link | Clé API | | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | | Lien vers le mode production | Clé API en mode production pour les développeurs d’application | | Lien vers le mode test | Clé API en mode test pour les développeurs d’application | | Lien d’environnement de test | Clé API dans un [environnement de test gérée](https://docs.stripe.com/stripe-apps/enable-sandbox-support.md#managed-sandbox) | Pour ce faire, transmettez le type de lien approprié dans le paramètre `state`. Voici un exemple de réponse pour la commande `curl` ci-dessus. ```json { "access_token": "{{ ACCESS_TOKEN }}", "livemode": true, "refresh_token": "{{ REFRESH_TOKEN }}", "scope": "stripe_apps", "stripe_publishable_key": "pk_live_***", "stripe_user_id": "acct_***", "token_type": "bearer" } ``` ## Actualiser votre token d'accès Les tokens d’accès expirent au bout d’une heure et les tokens d’actualisation au bout d’un an. Les tokens d’actualisation sont également renouvelés à chaque échange, de sorte que le délai d’expiration des nouveaux tokens d’actualisation est toujours d’un an à compter de la date de leur génération ou de leur annulation. Si vous échangez un token d’actualisation contre un token d’accès dans un délai d’un an, vous ne devez jamais atteindre la date d’expiration du token d’actualisation. Voici la commande `curl` équivalente permettant d’échanger le token d’accès contre un token d’actualisation à l’aide de votre clé secrète : ```bash curl -X POST https://api.stripe.com/v1/oauth/token \ -u sk_live_***: \ -d refresh_token={{ REFRESH_TOKEN }} \ -d grant_type=refresh_token ``` Voici un exemple de réponse. ```json { "access_token": "{{ ACCESS_TOKEN }}", "livemode": true, "refresh_token": "{{ REFRESH_TOKEN }}", "scope": "stripe_apps", "stripe_publishable_key": "pk_live_***", "account_id": "acct_***", "token_type": "bearer" } ``` Vous recevrez un nouveau token d’actualisation et le token précédent expirera. Vous devez enregistrer le nouveau token d’actualisation de manière sécurisée dans votre back-end et l’utiliser pour obtenir un nouveau token d’accès chaque fois que vous souhaitez accéder à l’API Stripe au nom de l’utilisateur Stripe. > Lorsque vous actualisez le token d’accès, il se peut qu’une erreur s’affiche, indiquant que vous ne disposez pas des autorisations requises. Dans ce cas, confirmez que vous utilisez la clé secrète de votre compte pour autoriser l’appel à l’API et que vous n’utilisez pas accidentellement un token d’actualisation, un token d’accès ou une clé restreinte. Vous pouvez vérifier le token d’accès en effectuant une requête à l’API Stripe. Par exemple : ```curl curl https://api.stripe.com/v1/customers \ -u "{{ ACCESS_TOKEN }}" ``` ## Optional: Personnaliser les liens avec des paramètres d'URL Vous pouvez modifier le comportement de l’installation d’applications en incluant des paramètres d’URL supplémentaires dans le lien d’installation. | Paramètre | | Description | | -------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `redirect_uri` | | L’URL vers laquelle les utilisateurs sont redirigés après avoir installé votre application. Si elle est fournie, elle doit correspondre exactement à l’une des valeurs `redirect_uris` séparées par une virgule de votre [manifeste d’application](https://docs.stripe.com/stripe-apps/reference/app-manifest.md). Pour vous protéger contre certaines attaques d’intercepteurs, la `redirect_uri` du mode production doit utiliser une connexion HTTPS sécurisée. | | `state` | (Recommandé) | Une valeur d’une chaîne arbitraire qui vous sera renvoyée. Elle est recommandée pour la protection contre les attaques CSRF. | ### Prévenir les attaques CSRF à l’aide du paramètre d’état Vous pouvez utiliser le paramètre `state` pour prévenir les attaques de type CSRF (Cross-Site Request Forgery). Celui-ci accepte n’importe quelle valeur de chaîne et la renvoie telle quelle lors de la redirection de l’outil d’installation vers votre application ou votre plateforme. Pour utiliser ce paramètre, transmettez une valeur unique difficile à deviner au lancement d’une installation à partir d’un lien d’installation. Enregistrez cette valeur afin de l’utiliser à des fins de vérification par la suite. > N’incluez pas de paramètres sensibles dans le champ d’état.