es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
Tags:  , , , ,

Answer

  1. Avatar for 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:

    management:
      endpoints:
         web:
           base-path: /
    
    spring:
       security:
         oauth2:
           client:
             registration:
               okta:
                 client-id: xxxxx
                 redirect-uri-template: "{baseUrl}/{namespace}/{appName}/oauth2/callback/{registrationId}"
                 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
    

    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.

Comments are closed.