El complemento basic-auth autentica y autoriza las solicitudes con base en el estándar HTTP Basic Authentication.
Tipo de complemento
Autenticación y autorización.
Campos
Configuración de autenticación
|
Campo |
Tipo de dato |
Obligatorio |
Valor predeterminado |
Descripción |
|
consumers |
array of object |
Sí |
- |
Quienes llaman al servicio. Se usan para autenticar las solicitudes. |
|
global_auth |
array of string |
No (obligatorio solo para configuraciones a nivel de instancia) |
- |
Solo se configura a nivel de instancia. Si se establece en true, la autenticación aplica de forma global. Si se establece en false, aplica únicamente a los nombres de dominio y rutas configurados. Cuando no se configura, la autenticación aplica de manera global solo si no hay nombres de dominio ni rutas definidos, por compatibilidad con versiones anteriores. |
Campos de consumers:
|
Campo |
Tipo de dato |
Obligatorio |
Valor predeterminado |
Descripción |
|
credential |
string |
Sí |
- |
Credencial de acceso del consumidor. |
|
name |
string |
Sí |
- |
Nombre del consumidor. |
(Opcional) Configuración de autorización
|
Campo |
Tipo de dato |
Obligatorio |
Valor predeterminado |
Descripción |
|
allow |
array of string |
No (obligatorio para configuraciones que no son a nivel de instancia) |
- |
Solo se configura a nivel de ruta o de nombre de dominio. Especifica qué consumidores pueden acceder a las solicitudes que coinciden con las condiciones configuradas. |
Las configuraciones de autorización y autenticación no pueden coexistir en la misma regla.
En las solicitudes autenticadas, se agrega el campo
X-Mse-Consumeral encabezado para identificar a quien realiza la llamada.
Ejemplos
Configurar la autenticación de forma global y la autorización para rutas
Este ejemplo habilita la autenticación básica y la autorización para rutas o dominios específicos de una puerta de enlace.
El nombre de usuario y la contraseña de la credencial se separan con dos puntos (:).
El valor de
credentialdebe ser único.
Aplique a continuación las configuraciones del complemento a nivel de instancia:
global_auth: false
consumers:
- credential: 'admin:123456'
name: consumer1
- credential: 'guest:abc'
name: consumer2
Aplique a continuación las configuraciones del complemento a las rutas route-a y route-b:
allow:
- consumer1
Aplique a continuación la configuración del complemento a los nombres de dominio *.example.com y test.com:
allow:
- consumer2
En este ejemplo, las rutas
route-ayroute-bcorresponden a las especificadas durante la creación de las rutas de la puerta de enlace. Si una solicitud del cliente coincide con alguna de ellas, se permite el acceso a la puerta de enlace al consumidor cuyonameesconsumer1. Los demás consumidores no tienen acceso.Los nombres de dominio
*.example.comytest.comsirven para coincidir con los dominios de las solicitudes. Si una solicitud del cliente coincide con alguno de ellos, se permite el acceso a la puerta de enlace al consumidor cuyonameesconsumer2. Los demás consumidores no tienen acceso.
Estas configuraciones permiten a continuación las siguientes solicitudes:
Se especifican el nombre de usuario y la contraseña en la solicitud.
# 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
Una vez superada la autenticación, se añade el campo X-Mse-Consumer a los encabezados de la solicitud para identificar a quien realiza la llamada. En este ejemplo, el valor es consumer1.
Estas configuraciones rechazan a continuación las siguientes solicitudes:
-
No se proporcionan credenciales en la solicitud y se devuelve el código de estado HTTP 401.
curl http://xxx.hello.com/test -
El nombre de usuario o la contraseña no son válidos y se devuelve el código de estado HTTP 401.
curl -u admin:abc http://xxx.hello.com/test -
El consumidor asociado a las credenciales no cuenta con permiso de acceso y se devuelve el código de estado HTTP 403.
# The consumer named consumer2 is not in the allow list of route-a. curl -u guest:abc http://xxx.hello.com/test
Habilitar la autenticación para puertas de enlace
Aplique a continuación la configuración para habilitar la autenticación básica a nivel de instancia. A partir de ese momento, todas las solicitudes deben autenticarse.
global_auth: true
consumers:
- credential: 'admin:123456'
name: consumer1
- credential: 'guest:abc'
name: consumer2
Códigos de error
|
Código de estado HTTP |
Mensaje de error |
Motivo |
|
401 |
Request denied by Basic Auth check. No Basic Authentication information found. |
No se proporcionó ninguna credencial en la solicitud. |
|
401 |
Request denied by Basic Auth check. Invalid username and/or password. |
La credencial de la solicitud no es válida. |
|
403 |
Request denied by Basic Auth check. Unauthorized consumer. |
Quien realiza la llamada no tiene permiso de acceso. |