¿Qué es y cómo configurar una API Identity?

API Identity es un tipo de API que creamos solo para facilitar la autenticación a través del flujo Password de OAuth.

En primer lugar, vamos a entender mejor qué es el flujo Password:

Flujo Password de OAuth

En este flujo, el nombre de usuario y la contraseña del usuario final se almacenan en un servicio externo y se utilizan para generar el token de acceso necesario para enviar peticiones a una API. El funcionamiento es como se muestra en el diagrama a continuación (fuente: The OAuth 2.0 Authorization Framework):

+----------+
| Resource |
|  Owner   |
|          |
+----------+
     v
     |    Resource Owner
    (A) Password Credentials
     |
     v
+---------+                                  +---------------+
|         |>--(B)---- Resource Owner ------->|               |
|         |         Password Credentials     | Authorization |
| Client  |                                  |     Server    |
|         |<--(C)---- Access Token ---------<|               |
|         |    (w/ Optional Refresh Token)   |               |
+---------+                                  +---------------+

El usuario informa su nombre de usuario y contraseña al cliente, que los envía al servidor de autorización en una petición POST solicitando la generación de un token de acceso. Como respuesta, el servidor de autorización envía un token de acceso que puede ser utilizado para enviar peticiones a la API.

¿Cuándo usarlo?

Dado que el flujo Password requiere que el nombre y la contraseña del usuario se compartan con el cliente, es más común utilizarlo para permitir el acceso a aplicaciones diferentes del mismo servicio, pero no a aplicaciones de terceros. En este caso, flujos más seguros, como el Authorization Code, son preferibles.

API Identity en el flujo de Password OAuth

Cuando se envía una llamada POST a la API OAuth para generar un token vía Password, esta identifica la API Identity vinculada a la API a través de la app informada en el header Authorization. El nombre de usuario y la contraseña deben estar presentes en el cuerpo de la petición. La API OAuth realiza una llamada a la API Identity para validar el nombre de usuario y la contraseña, utilizando el endpoint de autenticación registrado en ella. Si la información es válida, la API Identity responde positivamente a la API OAuth, que genera el token necesario para acceder a la API. De lo contrario, el token no es generado.

Es posible vincular varias APIs Identity a la misma API. En este flujo de autenticación, la API OAuth llama a cada una de las Identity vinculadas, de la más reciente a la más antigua. Una vez que el nombre de usuario y la contraseña son validados, se interrumpe la validación y se responde positivamente a la API OAuth. Si se llaman todas las APIs Identity y el nombre de usuario y la contraseña no son validados, el token no es generado. Esto permite que el Manager concentre los servidores de autenticación internos para sus APIs.

En resumen, este es el flujo (con un ejemplo de llamada a dos APIs Identity):

api identity es
  • Toda API que requiera el flujo Password para generar y validar tokens de acceso debe estar vinculada a al menos una API Identity. Esta vinculación se realiza en el registro de la API Identity.

  • La API y la API Identity deben estar desplegadas en el mismo entorno.

  • Para que la API Identity pueda manejar las llamadas para generar tokens, debe estar desplegada en el mismo entorno del flujo POST /access-token. Es decir, en el mismo entorno de la API OAuth, que ya está creada en su Manager.

¿Cómo configurar una API Identity?

La configuración de una API Identity sigue los mismos pasos que una API normal. La diferencia es que hay un paso extra en el caso de la API Identity, en el cual necesitamos vincularla a la API que requerirá tokens de acceso generados por el flujo Password.

Consulte más detalles sobre el funcionamiento de las APIs Identity y cómo configurarla.

Información adicional

Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]