Tous les produits
Search
Centre de documentation

API Gateway:Plug-in OAuth

Dernière mise à jour :Sep 21, 2026

Le plug-in OAuth délivre des jetons d'accès OAuth 2.0 basés sur des JSON Web Tokens (JWT), conformes à la norme RFC 9068.

Type de plug-in

Authentification et autorisation.

Configuration du plug-in

Champs

Configuration de l'authentification

Champ

Type de données

Obligatoire

Valeur par défaut

Description

consumers

array of object

Oui

-

Appelants (consommateurs) autorisés à demander une authentification.

issuer

string

Non

Higress-Gateway

Émetteur JWT.

auth_path

string

Non

/oauth2/token

Suffixe de chemin pour la délivrance des jetons. Assurez-vous que la route correspond à ce chemin. Si vous utilisez la gestion des API, créez une API avec le même chemin.

global_credentials

bool

Non

true

Indique si les identifiants délivrés sur n'importe quelle route accordent l'accès après la réussite de l'authentification du consommateur.

auth_header_name

string

Non

Authorization

En-tête de requête contenant le JWT.

token_ttl

number

Non

7200

Durée de vie du jeton après sa délivrance, en secondes.

clock_skew_seconds

number

Non

60

Décalage d'horloge autorisé pour la vérification des champs exp et iat du JWT, en secondes.

keep_token

bool

Non

true

Indique s'il faut conserver le JWT dans les requêtes transférées vers le backend.

global_auth

array of string

Non (obligatoire uniquement pour les configurations au niveau de l'instance)

-

Uniquement au niveau de l'instance. Si la valeur est définie sur true, l'authentification s'applique à toutes les routes. Si la valeur est définie sur false, l'authentification s'applique uniquement aux domaines et routes configurés. Si ce paramètre n'est pas défini, l'authentification s'applique globalement uniquement lorsqu'aucune configuration au niveau du domaine ou de la route n'existe.

Champs dans consumers :

Champ

Type de données

Obligatoire

Valeur par défaut

Description

name

string

Oui

-

Nom du consommateur.

client_id

string

Oui

-

ID client OAuth 2.0.

client_secret

string

Oui

-

Secret client OAuth 2.0.

Important
  • Si une route correspond à auth_path, la requête n'est pas transférée vers le backend. La route génère plutôt un jeton.

  • Si global_credentials a la valeur false, assurez-vous que la route avec le plug-in activé n'utilise pas de correspondance exacte. Une route coexistante avec correspondance de préfixe peut provoquer un comportement inattendu.

  • Pour les requêtes authentifiées, un en-tête X-Mse-Consumer est ajouté pour identifier l'appelant.

(Facultatif) Configuration de l'autorisation

Champ

Type de données

Obligatoire

Valeur par défaut

Description

allow

array of string

Non (obligatoire pour les configurations autres qu'au niveau de l'instance)

-

Uniquement au niveau de la route ou du domaine. Spécifie quels consommateurs peuvent accéder aux requêtes correspondantes pour un contrôle granulaire des autorisations.

Important

Les configurations d'autorisation et d'authentification ne peuvent pas coexister dans la même règle.

Exemples

Configuration de l'autorisation au niveau de la route

Appliquez la configuration de plug-in suivante à route-a et route-b :

consumers:
- name: consumer1
  client_id: 12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  client_secret: abcdefgh-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Avec cette configuration, les identifiants délivrés par route-a ne peuvent pas accéder à route-b et vice versa.

Pour partager les identifiants entre les routes :

global_credentials: true
consumers:
- name: consumer1
  client_id: 12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  client_secret: abcdefgh-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Configuration globale de l'autorisation et configuration de l'authentification au niveau de la route

La configuration suivante active l'authentification JWT pour des routes ou domaines spécifiques. Si un JWT correspond à plusieurs JSON Web Key Sets (JWKSs), le premier consumer correspondant prend effet.

Configuration au niveau de l'instance :

global_auth: false
consumers:
- name: consumer1
  client_id: 12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  client_secret: abcdefgh-xxxx-xxxx-xxxx-xxxxxxxxxxxx
- name: consumer2
  client_id: 87654321-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  client_secret: hgfedcba-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Configuration pour route-a et route-b :

allow:
- consumer1

Configuration pour *.example.com et test.com :

allow:
- consumer2
Remarque
  • route-a et route-b sont des routes de passerelle. Les requêtes correspondant à ces routes n'autorisent que le consommateur nommé consumer1.

  • *.example.com et test.com correspondent aux noms de domaine dans les requêtes. Les requêtes correspondant à ces domaines n'autorisent que le consommateur nommé consumer2.

Activer l'authentification au niveau de la passerelle

Activez l'authentification OAuth2 pour toutes les requêtes de la passerelle :

global_auth: true
consumers:
- name: consumer1
  client_id: 12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  client_secret: abcdefgh-xxxx-xxxx-xxxx-xxxxxxxxxxxx
- name: consumer2
  client_id: 87654321-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  client_secret: hgfedcba-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Exemples de requêtes

Utiliser le type d'octroi Client Credential

Obtenir un jeton d'accès

# Obtain an access token by using the GET method. We recommend that you use this method.
curl 'http://test.com/oauth2/token?grant_type=client_credentials&client_id=12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx&client_secret=abcdefgh-xxxx-xxxx-xxxx-xxxxxxxxxxxx'

# Obtain an access token by using the POST method. To perform this operation, you need to match a route that points to a real destination service. Otherwise, the gateway does not read request bodies.
curl 'http://test.com/oauth2/token' -H 'content-type: application/x-www-form-urlencoded' -d 'grant_type=client_credentials&client_id=12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx&client_secret=abcdefgh-xxxx-xxxx-xxxx-xxxxxxxxxxxx'

# Obtain the value of the access_token field from the response.
{
  "token_type": "bearer",
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6ImFwcGxpY2F0aW9uXC9hdCtqd3QifQ.eyJhdWQiOiJkZWZhdWx0IiwiY2xpZW50X2lkIjoiMTIzNDU2NzgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4IiwiZXhwIjoxNjg3OTUxNDYzLCJpYXQiOjE2ODc5NDQyNjMsImlzcyI6IkhpZ3Jlc3MtR2F0ZXdheSIsImp0aSI6IjEwOTU5ZDFiLThkNjEtNGRlYy1iZWE3LTk0ODEwMzc1YjYzYyIsInN1YiI6ImNvbnN1bWVyMSJ9.NkT_rG3DcV9543vBQgneVqoGfIhVeOuUBwLJJ4Wycb0",
  "expires_in": 7200
}

Utiliser le jeton d'accès pour initier une requête

curl 'http://test.com' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6ImFwcGxpY2F0aW9uXC9hdCtqd3QifQ.eyJhdWQiOiJkZWZhdWx0IiwiY2xpZW50X2lkIjoiMTIzNDU2NzgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4IiwiZXhwIjoxNjg3OTUxNDYzLCJpYXQiOjE2ODc5NDQyNjMsImlzcyI6IkhpZ3Jlc3MtR2F0ZXdheSIsImp0aSI6IjEwOTU5ZDFiLThkNjEtNGRlYy1iZWE3LTk0ODEwMzc1YjYzYyIsInN1YiI6ImNvbnN1bWVyMSJ9.NkT_rG3DcV9543vBQgneVqoGfIhVeOuUBwLJJ4Wycb0'

Codes d'erreur

Code d'état HTTP

Message d'erreur

Raison

401

Invalid Jwt token.

Le JWT est manquant, mal formé ou expiré.

403

Access Denied.

Le consommateur n'est pas autorisé à accéder à cette route.