Mulesoft Anypoint Platform + OpenID Identity Provider + OKTA. Parte 1

Como parte de las muchas bondades que ofrece Mulesoft Anypoint Platform, existe la capacidad de integrarse con diferentes Identity Providers. Esto con el objetivo de cubrir tres casos de uso particulares: 

  1. Que la gestión de usuarios se realice de manera externa a Anypoint Platform. Con gestión de usuarios me refiero a la creación, mantenimiento de usuarios que utilizarán los diferentes módulos de Anypoint Platform 
  2. Que el control de acceso lo lleve a cabo una plataforma externa. Es decir, que en el momento que un usuario desee ingresar a Anypoint Platform, la plataforma externa sea que quien pida la autenticación del usuario. Esto podría acarrear como consecuenia un Single Sign-on (SSO), que recurrentemente las organizaciones están buscando 
  3. Que el registro y control de las aplicaciones que usan las APIs, igualmente lo controle y lo lleve a cabo un ente externo. Esto es qué, cuando un ente interno o externo a la organización, requiera registrar la aplicación o aplicaciones que usarán las APIs manejadas a través de Anypoint Platform, éstas sean creadas y gestionadas desde un ente externo.

Mulesoft Anypoint Platform soporta estándares de la industria, tales como: 
  1. SAML 
  2. OpenID 
Con OpenID puede resolver los tres casos de uso previamente expuestos, y con SAML puede resolver los primeros dos. 

¿De qué va a depender que use uno u otro? En buena parte de la plataforma de Control de Acceso y Gestión de Identidades, que tenga la organización y que tecnológicamente soporte uno y otro estándar. Actualmente prácticamente todas las plataformas de control de acceso hacen uso de estos estándares. 

Por ejemplo: 

  1. OKTA 
  2. OpenAM 
  3. Oracle Identity Cloud Services 
  4. Microsoft Azure 
  5. WS02 
  6. etc  

Digamos que cualquier Identity Provider (IdP) decente debe ofrecer este tipo de alternativas. 
Como hemos mencionado en párrafos anteriores, Mulesoft Anypoint Platform ofrece capacidades para lograrlo. 

En esta publicación vamos a realizar la configuración para realizar la integración con OKTA, utilizando OpenID. 

OKTA es otra gran plataforma. Incluso, podríamos decir que es una de las más poderosas actualmente en el mercado. Ofrece una variedad de estándares que pasan por OAUTH 2.0, SAML, OpenID (incluido el Dynamic Client Registration), etc.

Esta es la primera parte de dos artículos en donde vamos a abordar este tema. En esta primera parte, vamos a configurar el control de acceso hacia Anypoint Platform a través de OKTA, usando OpenID.
Desde OKTA se van a gestionar a los usuarios que van a poder ingresar a Anypoint Platform, y además OKTA proveerá los medios de autenticación necesarios para que esto suceda.

¿Qué es lo que debemos usar para poder lograr esta configuración?

  1. Una cuenta de Anypoint Pltaform, ya sea un trial o bien una instancia de tu organización. El usuario que ocupes necesita tener privilegios para hacer configuraciones en el módulo de Access Management
  2. Una cuenta de OKTA, ya sea un trial o bien una instancia de tu organización. El usuario que uses, debe tener privilegios suficientes para crear aplicaciones y realizar configuraciones.

Van a ver lo fácil que es realizar la configuraciones, de hecho se lleva minutos poderla realizar, siempre y cuando tengas los accesos correspondientes.

Podrías pensar que se requieren hacer muchos pasos entre ambas plataformas, pero la realidad es que todo lo podrías hacer desde el propio Mulesoft, siempre y cuando tengas los accesos a OKTA a la mano.

Los pasos son los siguientes:

1. Entra a tu tenant de OKTA. Por ejemplo, en mi caso: 

2. Una vez que hayas ingresado,  lo primero que vamos a crear es un API token que ocupamos ingresar más adelante en las pantallas de Mule. Este es un token que utiliza OKTA para poder hacer las llamadas a sus propias APIs. Para gestionarlo dirígete a esta menú:




Este es el menú de Security-->API. Estando allí vas a generar un token para el usuario que utilizarás para realizar la configuración.

3. Después de darle click en API, verás esta pantalla:

En esta pantalla tienes acceso a tu Authorization Server default y también a la pestaña de Tokens, en donde justamente lo generaremos. Da click en tokens y saldrá la siguiente pantalla:


4. Da click en el botón señalado con rojo en la imagen anterior, esto te llevará a la siguiente pantalla en donde generarás el token:



Pone un nombre  a tu token y da click en el botón de Create Token. 

5. Te saldrá la siguiente pantalla:


Copia tu token y ponlo en un lugar en donde solo tú tengas acceso. Además, esta será la última vez que puedas copiarlo desde la interface WEB. Solo en esta ocasión te lo mostrará OKTA, así que más vale que tomes nota de él.

Hasta el momento tenemos un dato importante para realizar la configuración, ahora nos falta tener acceso a los endpoints estándar de OpenID que nos servirán para que Anypoint Platform pueda arrancar una conversación con OKTA, usando OpenID.

Esto último es muy fácil. OKTA te ofrece un endpoint de metadata desde donde puedes sacar esta información. Necesitamos conseguir:

  • Client Registration URL
  • OpenID Connect Issuer
  • Authorize URL
  • Token URL
  • User Info URL

Para poderlos obtener, los puedes tomar de la metadata, como ya lo habíamos mencionado. Y esta metada la obtienes aquí:

Simplemente vuelve a dar click en el tab de Authorization Servers.

(Aprovechando que estás en esta pantalla, toma nota del Issuer URI, porque lo usaremos mas adelante)

Y da click en el link que dice default (encerrado en el cuadro rojo de la imagen anterior). Al darle click verás esta pantalla:




En la metadata URI (encerrada en el cuadro negro de la imagen anterior), están los valores que estamos buscando (o casi todos, ahorita lo vemos). Así que simplemente dale un GET a esa dirección y obtendrás un objeto JSON con los datos. Vamos a hacerlo con postman:



Prácticamente ahí están los endpoints que buscamos, menos el de UserInfo, pero ese ahora les decimos cuál es.

Toma nota de los endpoints y ahora sí ve a Mulesoft Anypoint Platform y entra al módulo de Access Management:


En la imagen anterior se señala que tienes que estar en la opción de Identity Providers, y escoger OpenId Connect. Seguramente en tu pantalla se verá diferente, pues en este caso ya está configurado. Pero en la tuya te darás cuenta en dónde escoger OpenID.
Cuando hagas esto, verás algo similar a la parte izquierda de la siguiente imagen. A propósito, en la siguiente imagen, hemos puesto del lado derecho los datos que sacaste de la metadata de OKTA y con un mapeo podrás ver los valores que corresponden:

El OpenID Connect Issuer, es la URI que copiaste en pasos anteriores, nos referimos a esto (marcado en azul):



Otro valor que nos falta es este que señalamos a continuación:



El Authorization header, debe ir:

SSWS <API_TOKEN_QUE_GENERASTE_EN_PASOS_ANTERIORES>


¿Recuerdas que hace unos minutos generaste un token que te pedimos resguardar? Es justo ese valor, de manera que te debes escribir algo así:

SSWS 00qAfJ0uSBS_VPwOo5Da6urcyadsf232KKIADFaddfasdf6jMdN


Y, finalmente, el endpoint de UserInfo, es este:

https://{TU_OKTA_TENANT}.okta.com/oauth2/v1/clients

Simplemente da click en el botón de guardar y la configuración está lista.

Al realizar esto, del lado de OKTA ha quedado registrada una aplicación con nombre Anypoint Platform. Para validarlo, ve a la sección de Applications, dando click aquí:



Ya que diste click en Applications, saldrá esta pantalla:

En amarillo marcamos la aplicación, ahora da click y revisa la configuración. Esto se vio reflejado de esta manera, porque desde Anypoint Platform se realizó el request hacia OKTA para registrar a la aplicación.

Lo único que nos falta es asociar usuarios de OKTA que pertenezcan a esta aplicación, para realizarlo, desde OKTA, ve a esta pantalla y agrega a un usuario con el cual probemos:



Ahora bien, la pregunta es: ¿Cómo hago para entrar a Anypoint Platform a través de un proveedor de identidad externo? La pregunta es válida, pues regularmente para entrar a Anypoit Platform, simplemente lo hacemos entrando aquí:




Pero ahora ya no vamos entrar por esta puerta , sino por la del IdP (Identity Provider). Para esto la URL cambia a lo siguiente:

https://anypoint.mulesoft.com/accounts/login/{ORG_ID}


Donde ORG_ID, se puede sacar de aquí:


Da click en el link de tu organización y saldrá esta pantalla:





Lo que está marcado como amarillo es el nombre de tu organización. 

De manera que con ese dato, podemos entrar así:

https://anypoint.mulesoft.com/accounts/login/sporgsolutions

Esto debe llevarte a la pantalla de login de OKTA, y al poner allí tus credenciales (y realizando una autenticación exitosa), deberá redirigir a Anypoint Platform.

En la siguiente parte de este artículo, veremos cómo hacer la configuración pero del client provider. Que esto lo ocupamos para gestionar las aplicaciones que usan a las APIs que expondrás a través de Mulesoft Anypoint Pltatform.


Comentarios

Entradas populares