Le plug-in basic-auth authentifie et autorise les requêtes selon la norme HTTP Basic Authentication.
Type de plug-in
Authentification et autorisation.
Champs
Configuration d'authentification
|
Champ |
Type de données |
Obligatoire |
Valeur par défaut |
Description |
|
consumers |
array of object |
Oui |
- |
Appelants de service, utilisés pour authentifier les requêtes. |
|
global_auth |
array of string |
Non (obligatoire uniquement pour les configurations au niveau de l'instance) |
- |
Configurable uniquement au niveau de l'instance. Si la valeur est true, l'authentification s'applique globalement. Si la valeur est false, l'authentification s'applique uniquement aux noms de domaine et aux routes configurés. En l'absence de configuration, l'authentification s'applique globalement uniquement si aucun nom de domaine ni aucune route n'est configuré, afin d'assurer la rétrocompatibilité. |
Champs dans consumers :
|
Champ |
Type de données |
Obligatoire |
Valeur par défaut |
Description |
|
credential |
string |
Oui |
- |
Identifiant d'accès du consommateur. |
|
name |
string |
Oui |
- |
Nom du consommateur. |
(Facultatif) Configuration d'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) |
- |
Configurable uniquement au niveau de la route ou du nom de domaine. Indique quels consommateurs peuvent accéder aux requêtes correspondant aux conditions configurées. |
Les configurations d'autorisation et d'authentification ne peuvent pas coexister dans la même règle.
Pour les requêtes authentifiées, le champ
X-Mse-Consumerest ajouté à l'en-tête de la requête pour identifier l'appelant.
Exemples
Configurer l'authentification globalement et l'autorisation pour les routes
Cet exemple active l'authentification basique et l'autorisation pour des routes ou des domaines spécifiques d'une passerelle.
Le nom d'utilisateur et le mot de passe dans l'identifiant sont séparés par deux-points (:).
La valeur de
credentialdoit être unique.
Appliquez les configurations de plug-in suivantes au niveau de l'instance :
global_auth: false
consumers:
- credential: 'admin:123456'
name: consumer1
- credential: 'guest:abc'
name: consumer2
Appliquez les configurations de plug-in suivantes aux routes route-a et route-b :
allow:
- consumer1
Appliquez la configuration de plug-in suivante aux noms de domaine *.example.com et test.com :
allow:
- consumer2
Dans cet exemple, les routes
route-aetroute-bcorrespondent à celles spécifiées lors de la création des routes de la passerelle. Si une requête client correspond à l'une des routes, l'appelant dont lenameestconsumer1est autorisé à accéder à la passerelle. Les autres appelants ne sont pas autorisés à y accéder.Dans cet exemple, les noms de domaine
*.example.comettest.comservent à faire correspondre les noms de domaine présents dans les requêtes. Si une requête client correspond à l'un des noms de domaine, l'appelant dont lenameestconsumer2est autorisé à accéder à la passerelle. Les autres appelants ne sont pas autorisés à y accéder.
Ces configurations autorisent les requêtes suivantes :
Le nom d'utilisateur et le mot de passe sont spécifiés dans la requête.
# In this example, route-a in the request is matched.
# Use the -u parameter in the curl command to specify the username and password.
curl -u admin:123456 http://xxx.hello.com/test
# You can also directly specify the Authorization request header in which the username and password are base64-encoded.
curl -H 'Authorization: Basic YWRtaW46MTIzNDU2' http://xxx.hello.com/test
Une fois l'authentification réussie, le champ X-Mse-Consumer est ajouté aux en-têtes de requête pour identifier l'appelant. Dans cet exemple, la valeur est consumer1.
Ces configurations refusent les requêtes suivantes :
-
Aucun identifiant n'est fourni dans la requête et le code d'état HTTP 401 est renvoyé.
curl http://xxx.hello.com/test -
Le nom d'utilisateur ou le mot de passe est incorrect et le code d'état HTTP 401 est renvoyé.
curl -u admin:abc http://xxx.hello.com/test -
L'appelant correspondant aux identifiants ne dispose pas d'autorisation d'accès et le code d'état HTTP 403 est renvoyé.
# The consumer named consumer2 is not in the allow list of route-a. curl -u guest:abc http://xxx.hello.com/test
Activer l'authentification pour les passerelles
Appliquez la configuration suivante pour activer l'authentification basique au niveau de l'instance. Toutes les requêtes doivent alors être authentifiées.
global_auth: true
consumers:
- credential: 'admin:123456'
name: consumer1
- credential: 'guest:abc'
name: consumer2
Codes d'erreur
|
Code d'état HTTP |
Message d'erreur |
Raison |
|
401 |
Request denied by Basic Auth check. No Basic Authentication information found. |
Aucun identifiant n'est fourni dans la requête. |
|
401 |
Request denied by Basic Auth check. Invalid username and/or password. |
L'identifiant présent dans la requête est incorrect. |
|
403 |
Request denied by Basic Auth check. Unauthorized consumer. |
L'appelant ne dispose pas d'autorisation d'accès. |