Tous les produits
Search
Centre de documentation

Resource Access Management:Accéder aux API Alibaba Cloud depuis une application native

Dernière mise à jour :Aug 09, 2026

Cette rubrique explique comment utiliser le flux de code d'autorisation OAuth 2.0 avec Proof Key for Code Exchange (PKCE) pour permettre à une application native (telle qu'une application de bureau ou mobile) d'accéder en toute sécurité aux API Alibaba Cloud pour le compte d'un utilisateur.

Prérequis

  • Vous avez créé une application native OAuth 2.0 dans la console Resource Access Management (RAM) et spécifié un URI de redirection.

  • Vous avez stocké en toute sécurité l'ID de votre application. Les applications natives n'utilisent pas de secret client.

Vue d'ensemble du flux d'autorisation

Le flux de code d'autorisation avec PKCE est la méthode recommandée et la plus sécurisée pour les applications natives. Il ajoute une couche de sécurité qui empêche les attaques par interception de code d'autorisation.

  1. Génération de code_verifier et code_challenge : Votre application native génère une chaîne aléatoire à haute entropie (le code_verifier) et une version transformée de celle-ci (le code_challenge).

  2. Initiation de la connexion par l'utilisateur : L'application ouvre un navigateur vers le point de terminaison d'autorisation d'Alibaba Cloud, en transmettant le code_challenge et sa méthode de transformation.

  3. Consentement de l'utilisateur : L'utilisateur se connecte à son compte Alibaba Cloud et accorde à l'application les autorisations demandées.

  4. Réception du code d'autorisation : Le serveur d'autorisation redirige l'utilisateur vers l'URL de redirection spécifiée par l'application avec un code d'autorisation à usage unique.

  5. Échange du code contre des jetons : Votre application envoie une requête au point de terminaison de jeton d'Alibaba Cloud, échangeant le code d'autorisation et le code_verifier d'origine contre un jeton d'accès et un jeton d'actualisation. Le serveur valide le code_verifier par rapport au code_challenge de la première étape.

  6. Accès aux ressources protégées : Votre application utilise le jeton d'accès pour effectuer des appels API autorisés vers les services Alibaba Cloud.

Étape 1 : Demander un code d'autorisation avec PKCE

Pour lancer le flux, votre application doit d'abord générer les paramètres PKCE, puis diriger l'utilisateur vers le point de terminaison d'autorisation.

1. Générer les paramètres PKCE

Tout d'abord, votre application crée et enregistre un code_verifier, qui est une chaîne aléatoire cryptographique à haute entropie comprise entre 43 et 128 caractères.

Ensuite, elle crée un code_challenge en transformant le code_verifier à l'aide de l'une des méthodes suivantes :

Méthode de transformation

Description

plain

Le code_challenge est identique au code_verifier. Cette méthode n'est pas recommandée pour les environnements de production.

S256

(Recommandé) Le code_challenge est un hachage SHA-256 encodé en Base64-URL de la chaîne ASCII code_verifier.code_challenge = BASE64URL-ENCODE(SHA256(ASCII(code_verifier)))

Exemple utilisant S256 :

  • Si code_verifier = dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk

  • Alors code_challenge = E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM

2. Rediriger vers le point de terminaison d'autorisation

Votre application ouvre un navigateur système vers le point de terminaison d'autorisation d'Alibaba Cloud (https://signin.alibabacloud.com/oauth2/v1/auth) avec les paramètres suivants.

Paramètre

Obligatoire

Description

client_id

Oui

L'ID de votre application native.

redirect_uri

Oui

L'URI de redirection vers lequel l'utilisateur sera envoyé après avoir accordé son consentement. Celui-ci doit correspondre exactement à l'un des URI enregistrés pour votre application.

response_type

Oui

Doit être défini sur code.

scope

Non

Une liste séparée par des espaces des étendues OAuth demandées par votre application. Si omis, toutes les étendues configurées pour l'application sont demandées.

state

Non

Une valeur opaque utilisée pour maintenir l'état entre la demande et le rappel. Il est fortement recommandé d'utiliser une chaîne aléatoire et impossible à deviner pour prévenir les attaques par falsification de requête intersite (CSRF).

code_challenge_method

Non

La méthode de transformation utilisée. Valeurs valides : plain et S256.

Valeur par défaut : plain.

code_challenge

Non

La chaîne code_challenge que vous avez générée.

Remarque

Si vous omettez ce paramètre, PKCE n'est pas utilisé et le flux est vulnérable aux attaques par interception de code d'autorisation. Dans ce cas, un attaquant qui intercepte le code d'autorisation peut l'échanger contre un jeton d'accès.

prompt

Non

Définissez ce paramètre sur admin_consent pour forcer le serveur d'autorisation à afficher l'écran de consentement à l'utilisateur, même s'il a déjà accordé les autorisations demandées. Si omis, l'écran de consentement n'est affiché que la première fois qu'un utilisateur accorde une autorisation à l'application.

Exemple de requête

https://signin.alibabacloud.com/oauth2/v1/auth?
client_id=98989****
&redirect_uri=meeting%3A%2F%2Fauthorize%2F
&response_type=code
&scope=openid%20%2Fworksuite%2Fuseraccess
&state=123456****
&code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSst****
&code_challenge_method=S256

Exemple de réponse

Si l'utilisateur accorde son consentement, le serveur d'autorisation redirige le navigateur de l'utilisateur vers votre redirect_uri avec le code d'autorisation et l'état ajoutés en tant que paramètres de requête.

GET HTTP/1.1 302 Found
Location: meeting://authorize/?code=ABAFDGDFXYZW888&state=123456****                     

Étape 2 : Échanger le code d'autorisation contre un jeton d'accès

Après réception du code d'autorisation, votre application doit envoyer une requête POST depuis son serveur backend vers le point de terminaison de jeton d'Alibaba Cloud (https://oauth.alibabacloud.com/v1/token) pour échanger le code d'autorisation contre des jetons.

Paramètres de la requête (corps POST)

Paramètre

Obligatoire

Description

code

Oui

Le code d'autorisation reçu à l'étape 1.

client_id

Oui

L'ID de votre application native.

redirect_uri

Oui

Le même URI de redirection que celui utilisé dans la requête de l'étape 1.

grant_type

Oui

Doit être défini sur authorization_code.

code_verifier

Non

La chaîne code_verifier d'origine générée à l'étape 1.

Exemple de requête

POST /v1/token HTTP/1.1 
Host: oauth.alibabacloud.com 
Content-Type: application/x-www-form-urlencoded
code=ABAFDGDFXYZW888&
client_id=98989****
redirect_uri=meeting://authorize/&
grant_type=authorization_code&
code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk                    

Exemple de réponse

Si la requête aboutit, le point de terminaison de jeton renvoie un objet JSON contenant les jetons.

{
  "access_token": "eyJraWQiOiJrMTIzNCIsImVuYyI6****",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "Ccx63VVeTn2dxV7ovXXfLtAqLLERA****",
  "id_token": "eyJhbGciOiJIUzI1****"
}                      

Étape 3 (Facultative) : Actualiser le jeton d'accès

Vous pouvez utiliser le jeton d'actualisation pour obtenir un nouveau jeton d'accès sans obliger l'utilisateur à se reconnecter. Point de terminaison : https://oauth.alibabacloud.com/v1/token

Paramètres de la requête (corps POST)

Paramètre

Obligatoire

Description

refresh_token

Oui

Le jeton d'actualisation que vous avez reçu précédemment.

client_id

Oui

L'ID de votre application native.

grant_type

Oui

Doit être défini sur refresh_token.

Exemple de requête

POST /v1/token HTTP/1.1 
Host: oauth.alibabacloud.com 
Content-Type: application/x-www-form-urlencoded
refresh_token=Ccx63VVeTn2dxV7ovXXfLtAqLLERAH****
client_id=98989****
grant_type=refresh_token

Exemple de réponse

Le point de terminaison de jeton renvoie un nouveau jeton d'accès.

{
  "access_token": "eyJraWQiOiJrMTIzNCIsImVuYyI6****",
  "token_type": "Bearer",
  "expires_in": 3600,
}                      

Révoquer un jeton d'actualisation

Lorsqu'un utilisateur se déconnecte de votre application ou dissocie son compte, vous devez révoquer le jeton d'actualisation associé pour l'invalider.

Point de terminaison : https://oauth.alibabacloud.com/v1/revoke

Paramètres de la requête (corps POST)

Paramètre

Obligatoire

Description

token

Oui

Le jeton d'actualisation que vous souhaitez révoquer.

client_id

Oui

L'ID de votre application native.

Une requête réussie renvoie un statut HTTP 200 OK.