Registro de redireccionamiento de Uri de Spring Security Okta
Tienes una aplicación Spring Boot MVC protegida por Spring Security OAuth2 que utiliza el flujo de código de autorización. La aplicación se redirige correctamente al URI de redireccionamiento para iniciar sesión cuando se implementa y ejecuta en la máquina local. Pero en nuestra implementación de Kubernetes, hay una puerta de enlace de API frente a la aplicación y la aplicación se accede en la siguiente ruta:
https://
/ /
donde k8_namespace_name es el nombre del espacio de nombres de Kubernetes y app_name es un identificador de la aplicación en el espacio de nombres. El problema es que el URI de redireccionamiento para iniciar sesión se dirige a:
https://
/oauth2/authorization/okta
en lugar de
https://
/ / /oauth2/authorization/okta
A continuación se muestra la configuración del archivo application.yaml:
management:
endpoints:
web:
base-path: /
spring:
security:
oauth2:
client:
registration:
okta:
client-id: xxxxx
scope:
- openid
- employee_number
- groups_whitelist
- first_name
- last_name
- store_number
provider:
okta:
authorization-uri: https://auth.com/v1/xxxx/authorize?skip_iwa=true
token-uri: https://auth.com/v1/xxxx/token
user-info-uri: https://auth.com/v1/xxxx/userinfo
jwk-set-uri: https://auth.com/v1/xxx/keys
davy.ai
Para solucionar este problema, necesitamos actualizar el URI de redirección para la configuración de Spring Security OAuth2. Podemos hacer esto agregando una propiedad llamada redirect-uri-template en la sección de registro para el cliente Okta en el archivo application.yaml.
Aquí hay una configuración actualizada de ejemplo:
Observa la adición de la propiedad redirect-uri-template y el uso de marcadores de posición para baseUrl, namespace, appName y registrationId. Al incluir estos marcadores de posición, la aplicación utilizará la URL de redirección correcta incluso cuando se acceda a través de la puerta de enlace de la API en Kubernetes.