Oracle API Gateway: autentificación y autorización con JSON Web Token (JWT) e IDCS

Dentro del stack de gestión de APIs que nos proporciona Oracle en su cloud (API Management) tenemos disponible Oracle API Gateway, que nos permite APIficar nuestros back-ends como Computes, Kubernetes o Functions. Todos tendemos a exponer las APIs de acceso a nuestras aplicaciones/back-ends de forma libre, sin pararnos a pensar quién o cómo se van a consumir y qué efecto puede tener en nuestra aplicación. Es muy importante securizar aquellas APIs que puedan provocar vulnerabilidades o simplemente por un control de acceso adecuado. En este post vamos a realizar la configuración de Oracle API Gateway para aceptar tokens JWT generados desde Oracle Identity Cloud Service (IDCS).

 

En la documentación oficial de API Gateway podéis encontrar otros métodos de autentificación y autorización.

 

 

Generación de aplicación en IDCS

Lo primero que necesitamos es crear una aplicación en IDCS que contendrá nuestra configuración para la obtención del token. Accedemos a la adminconsole (https://<idcs-uri>.identity.oraclecloud.com/ui/v1/adminconsole) y navegamos hasta Applications creando una nueva:

 

 

Seleccionamos Confidential Application:

 

 

Ahora nos aparecerá la guía de creación de la aplicación. Le ponemos un nombre, por ejemplo, APIG_JWT:

 

 

Clicamos sobre Next y seleccionamos Configure this application as a client now:

 

 

En este formulario, deberemos marcar Resource Owner, Client Credentials e Introspect:

 

 

En la siguiente página elegimos Configure this application as a resource server now y ahora es cuando configuraremos los scopes de acceso para solicitar el token:

 

 

Agregamos un Primary Audience y los scopes que vayamos a proporcionar:

 

 

Y con esto quedaría la aplicación finalizada. Clicamos Next, Next y Finish, y en este momento aparecerán los Client ID y Client Secret que nos harán falta para solicitar el token a IDCS, por lo que se deben apuntar para después compartir con los consumidores de nuestras APIs:

 

 

Como ya tenemos nuestra APP que nos proporcionará el acceso, realizamos una prueba contra nuestro IDCS para comprobar la correcta obtención del token. Os pongo un ejemplo con Postman:

 

 

Para obtener el token se trata de realizar una petición POST sobre la URI https://{{idcs-uri}}/oauth2/v1/token con el Content-Type application/x-www-form-urlencoded donde indicaremos los siguientes parámetros:

  • grant_type: password
  • scope: Primary Audience + Scope. Se trata de la concatenación de las dos partes.
  • username: usuario con acceso al tenancy
  • password: password del usuario

 

Antes de pasar a la configuración en API Gateway tendremos que asegurarnos que nuestro IDCS expone de manera pública JWK donde expone la firma del token y sobre la cual validará API Gateway.

 

Se activará sobre Settings, Default Settings, Access Signing Certificate:

 

La uri donde está disponible JKW es https://{{idcs-uri}}/admin/v1/SigningCert/jwk

 

Configuración API Gateway

 

En el siguiente ejemplo API Gateway ya se encuentra provisionado y con un Deployment que vamos a configurar, y que tiene un route con Stock Response.

Accedemos al Deployment y añadimos Authentication:

 

 

A continuación nos encontramos el formulario que tendremos que cumplimentar con los siguientes datos:

 

 

 

Aplicamos los cambios y procederemos a realizar el test sobre la API de prueba.

Al igual que antes, el ejemplo se mostrará sobre Postman:

 

 

Comprobamos, que, claramente sin Token de auth obtenemos un 401 sobre nuestra API. En este punto, generamos un token válido con https://{{idcs-uri}}/oauth2/v1/token y lo informaremos sobre esta misma request:

 

 

Como podéis comprobar todo se realiza mediante configuración dentro de Oracle Cloud, por lo que os animo a securizar todas vuestras APIs Públicas.

Twitter
LinkedIn
Evolución, innovación y transformación
32 Service Expertise avalados por Oracle 
Nuestra propuesta de valor
Posts 100% Oracle
Sigue nuestro día a día