https://www.youtube.com/embed/nnaMpgjW0EY

Descripción

Se describe al detalle cómo Nginx Proxy Manager (NPM) controla y delega la autenticación del la web de usuario de Grafana MIMIR a Keycloak, usando OAuth2 Authorization Code. Además se explica como se combian este proceso con el proceso de la protección de las APIs a través de un accesso de OAuth2 Client Credentials con Access Token gestionado por la aplicación cliente. Así pues con un SSO, Keycloak, podemos gestionar ambos accesos.

Secuencia del proceso OAuth2 Authorization Code con reverse proxy

A continuación se detalla, en 22 pasos, el flujo OAuth2 Authorization Code con HTTP proxy para acceder a la interfaz de administración de Grafana Mimir, incorporando los matices específicos del entorno:

OAuth2-OAuth2 Authorization Code with HTTP proxy.drawio.svg

  1. Solicitud Inicial del Usuario: El usuario ingresa la URL pública de la UI de Grafana Mimir en su navegador (por ejemplo, https://mimir.example.com).
  2. Recepción de la Petición en NPM: Nginx Proxy Manager (NPM) recibe la solicitud. NPM actúa exclusivamente como reverse proxy: enruta URLs y termina las conexiones SSL/TLS.
  3. Delegación de la Identificación al OAuth2 Proxy: NPM delega la identificación del usuario al componente OAuth2 Proxy, sin intervenir en la lógica de autenticación.
  4. Verificación de Sesión en OAuth2 Proxy: El OAuth2 Proxy revisa si el navegador presenta una cookie de sesión válida. Al no encontrarla, determina que el usuario debe autenticarse.
  5. Redirección a Keycloak (Inicio de OAuth2): OAuth2 Proxy construye una URL de autorización para Keycloak, incluyendo parámetros como el client_id, scope (por ejemplo, "openid email profile offline_access roles"), y la redirect_uri a la que se enviará el código de autorización.
  6. Redirección del Navegador a Keycloak: El navegador es redirigido desde el OAuth2 Proxy a la pantalla de autenticación de Keycloak.
  7. Presentación de la Pantalla de Login en Keycloak: Keycloak muestra su formulario de login, solicitando al usuario sus credenciales.
  8. Ingreso de Credenciales por el Usuario: El usuario introduce su nombre de usuario y contraseña (u otro mecanismo configurado en Keycloak).
  9. Validación de Credenciales en Keycloak: Keycloak valida las credenciales y, de ser correctas, autentica al usuario y crea su propia sesión interna.
  10. Emisión del Código de Autorización: Tras una autenticación exitosa, Keycloak genera un código de autorización temporal y redirige al navegador a la redirect_uri configurada por OAuth2 Proxy, adjuntando el código en la URL.