Las API desempeñan un papel fundamental en la conectividad de las aplicação , pero también son vulnerables a los ataques. En el pasado, con las aplicaciones monolíticas, solo había un punto de entrada que proteger. En las arquitecturas de microservicios, una sola aplicación a menudo consta de muchos microservicios conectados a través de API, y cada una de esas API podría tener cientos de puntos finales. Esto hace que la superficie de ataque potencial para las API sea enorme, y cada nueva API crea un punto de entrada en su perímetro de seguridad.
Existen muchas estrategias para proteger sus API. Uno de los más fundamentales es el control de acceso . En pocas palabras, debe verificar la identidad del usuario (autenticación o AuthN) y confirmar que puede acceder a ciertos recursos (autorización o AuthZ). La implementación de OpenID Connect (OIDC) es uno de los enfoques de control de acceso más comunes utilizados para las API. Puede ponerlo en funcionamiento en minutos con API Connectivity Manager , parte de F5 NGINX Management Suite .
En este tutorial, aprenderá cómo realizar la parte de autorización del flujo de trabajo de OIDC configurando la validación de JSON Web Token (JWT) con API Connectivity Manager y Azure Active Directory (Azure AD).
OpenID Connect (OIDC) es un protocolo de identidad creado sobre el protocolo OAuth 2.0 . OIDC permite a los clientes verificar la identidad del usuario final o del dispositivo. Esta es una parte del control de acceso, que incluye tanto la autenticación como la autorización:
Hay muchas implementaciones diferentes de OIDC, incluido Azure AD, que usarás en este tutorial. Alternativamente, puede utilizar otras soluciones OIDC, como F5 BIG-IP Access Policy Manager (APM), Okta, Auth0, Ping Identity y más, con API Connectivity Manager.
Asegúrese de tener los siguientes requisitos previos:
Puede registrarse para su prueba gratuita de 30 días de NGINX Management Suite si necesita acceso a API Connectivity Manager.
Abra un navegador e inicie sesión en su Portal de Azure .
Haga clic en Registros de aplicaciones en el menú de la izquierda.
Figura 1: Página de inicio del portal de Azure AD
Haga clic en el botón Nuevo registro .
Figura 2: Registro de aplicaciones de Azure AD
Para crear una nueva aplicação, proporcione un nombre , redirija la URI y haga clic en el botón Registrar . En esta demostración, aprovechará Postman , por lo que utilizará la URI de redireccionamiento OIDC de Postman .
Figura 3: Crear una nueva aplicación de Azure AD
Una vez creada tu aplicación, debes crear ámbitos OAuth para proporcionar acceso a la API. Haz clic en el enlace " Exponer una API" en el menú de la izquierda.
Figura 4: Exponer una API
Haga clic en Agregar un alcance .
Figura 5: Agregar un alcance
Acepte el URI de ID de aplicação predeterminado o cree el suyo propio y haga clic en el botón Guardar y continuar . Si desea crear su propio URI de ID de aplicação , debe registrar el dominio deseado con Azure AD.
Figura 6: URL de ID de la aplicação
Para esta demostración, el alcance se basa en un ejemplo de Microsoft. Complete el formulario con la siguiente información y luego haga clic en el botón Agregar alcance :
Nombre del alcance: Empleados.Leer.Todo
¿Quién puede consentir?: Administradores y usuarios
Nombre para mostrar del consentimiento del administrador: Acceso de solo lectura a los registros de empleados
Descripción del consentimiento del administrador: Permitir acceso de solo lectura a todos los datos de los empleados.
Nombre para mostrar del consentimiento del usuario: Acceso de solo lectura a sus registros de empleados
Descripción del consentimiento del usuario: Permitir acceso de solo lectura a los datos de sus empleados.
Figura 7: Agregar un alcance
A continuación, debes autorizar la aplicação cliente. Para ello, tome el ID de cliente. Haga clic en el enlace "Descripción general" en el menú de la izquierda y copie el ID de la aplicação (cliente) .
Figura 8: ID de cliente de la aplicação
Haga clic nuevamente en el enlace Exponer una API y luego haga clic en el botón Agregar una aplicação cliente .
Figura 9: Agregar una aplicação cliente
Pegue el ID de cliente de la aplicação en el campo ID de cliente y marque la casilla junto a la URI del ID de la aplicação . A continuación, haga clic en el botón "Agregar aplicação" .
Figura 10: Agregar una aplicação cliente
A continuación, para esta demostración, utilizará un código de autorización con el Flujo de código de autorización , por lo que se necesitará un secreto de cliente para Postman. Haga clic en el enlace Certificados y secretos en el menú de la izquierda, luego haga clic en el botón Nuevo secreto de cliente .
Figura 11: Nuevo secreto de cliente
Nombra tu secreto y deja el tiempo de expiración predeterminado.
Figura 12: Nombre secreto
A continuación, copie su secreto de cliente y guárdelo en una bóveda de contraseñas para poder usarlo más tarde.
Figura 13: Secreto del cliente
Ahora que tiene configurada su aplicação de Azure AD, puede configurar el clúster de API Gateway en el Administrador de conectividad de API para realizar una aserción de token web JSON para el servicio definido. Para este paso, deberá determinar el URI para los conjuntos de claves web JSON (JWK) de su inquilino de Azure AD.
Puede obtener su URI JWKS desde Punto de conexión conocido del inquilino de Azure AD:
https://login.microsoftonline.com/<tenant-id>/v2.0/.well-known/openid-configuration
Esta página proporcionará una carga JSON que contiene la clave jwks_uri . Necesitarás copiar su valor.
Figura 14: Punto de conexión conocido del inquilino de Azure AD
Ahora que tiene su URI JWKS, abra la consola de API Connectivity Manager y navegue hasta la configuración de su proxy de servicio. Haga clic en Agregar política para la política de aserción de token web JSON .
Figura 15: Políticas de proxy del servicio de puerta de enlace
A continuación, pegue el URI JKWS de su inquilino de Azure AD en el campo Ubicación del URI y haga clic en el botón Agregar .
Figura 16: Política de aserción de tokens web JSON
Haga clic en el botón Guardar y publicar para enviar esta política a su clúster de puerta de enlace de API.
Figura 17: Política de puerta de enlace de servicio
¡Eso es todo! Su instancia de API Connectivity Manager ahora está configurada para realizar una aserción JWT en la puerta de enlace de servicio configurada.
Ahora es el momento de probar su configuración y asegurarse de que se comporte como se espera. Para comenzar, hay algunas cosas que necesitará obtener de su aplicação de Azure AD:
Para obtener el alcance de OAuth, abra su portal de Azure y regrese a la página de registro de su aplicación. A continuación, haga clic en el enlace Exponer una API en el menú de la izquierda y haga clic en el símbolo Copiar para su alcance. Guarde este valor para poder usarlo en unos minutos.
Figura 18: Ámbitos de API
Para obtener los puntos finales de autorización y token de OAuth, haga clic en el enlace Descripción general en el menú de la izquierda y luego haga clic en el botón Puntos finales . Después de eso, copie los URI de los puntos finales de autorización y token.
Figura 19: Puntos de conexión de la aplicação Azure AD
Figura 20: URL de puntos de conexión de aplicação de Azure AD
Abra Postman y haga clic en el menú Entornos . Luego, haga clic en el enlace Crear entorno .
Figura 21: Cartero crea entorno
Nombre su entorno y agregue seis variables con los valores (guardados de los pasos anteriores) en la columna Valor inicial y en la columna Valor actual , luego haga clic en el botón Guardar .
Figura 22: Variables de entorno del cartero
Abra una nueva pestaña en Postman y siga estos pasos:
Figura 23: Solicitud de cartero
Figura 24: Configuración de autenticación de Postman
Se abrirá una ventana del navegador y se le pedirá que inicie sesión con sus credenciales de Azure AD. Una vez que se haya autenticado exitosamente, será redirigido nuevamente a Postman y aparecerá la siguiente ventana. Haga clic en el botón Usar token .
Figura 25: Ficha de uso del cartero
Ahora que tienes tu token de acceso OAuth, finalmente puedes realizar tu llamada API. Haga clic en el botón Guardar y luego haga clic en el botón Enviar .
Si todo está configurado correctamente, debería ver una respuesta 200 OK.
Figura 26: Solicitud exitosa del Cartero
Ahora cuenta con API Connectivity Manager que protege sus API mediante tokens de acceso OAuth de Azure AD. Los próximos pasos serían agregar ámbitos OAuth adicionales y configurar el clúster de API Gateway en API Connectivity Manager para pasar esos ámbitos a sus API protegidas, ¡pero ese es un tema para otra publicación!
Comience una prueba gratuita de 30 días de NGINX Management Suite , que incluye API Connectivity Manager y Instance Manager .
Una versión de esta publicación apareció por primera vez en codygreen.com . Se edita y reimprime aquí con permiso del autor.
"Esta publicación de blog puede hacer referencia a productos que ya no están disponibles o que ya no reciben soporte. Para obtener la información más actualizada sobre los productos y soluciones F5 NGINX disponibles, explore nuestra familia de productos NGINX . NGINX ahora es parte de F5. Todos los enlaces anteriores de NGINX.com redirigirán a contenido similar de NGINX en F5.com.