Primeros pasos
Crear un proyecto nuevo
Genera un proyecto de Spring Boot con las dependencias requeridas.
- Con Spring Initializr
- O créalo manualmente con Maven
Añade el starter de Spring Boot de Okta
Agrega la dependencia de Okta Spring Boot Starter a tu proyecto. Esto incluye la compatibilidad con el inicio de sesión OAuth2 de Spring Security, con configuración automática específica para Auth0/Okta.
- Maven (pom.xml)
- Gradle (build.gradle)
Configurar Auth0
Crea una aplicación web regular en tu tenant de Auth0 y agrega la configuración a tu proyecto.Puede hacerlo automáticamente ejecutando un comando de CLI o de forma manual desde el Dashboard:
- CLI
- Panel
Ejecute el siguiente comando de shell en el directorio raíz del proyecto para crear una aplicación de Auth0 y actualizar el archivo
application.yml:- Mac/Linux
- Windows (PowerShell)
Configurar la autenticación
Cree una configuración de seguridad que habilite el inicio de sesión con OAuth2 y administre el cierre de sesión en Auth0. Los usuarios no autenticados se redirigen automáticamente a la página de inicio de sesión de Auth0.
Crear controladores y vistas
Crea los controladores y las plantillas de Thymeleaf para las páginas de inicio y perfil.
Ahora debería tener una aplicación web de Spring Boot completamente funcional con el inicio de sesión de Auth0 ejecutándose en localhost. La página de inicio es pública y, al navegar a
/profile, los usuarios no autenticados son redirigidos a la página de inicio de sesión de Auth0.Uso avanzado
Acceso a los claims del perfil de usuario
Acceso a los claims del perfil de usuario
El parámetro
@AuthenticationPrincipal OidcUser le da acceso a todos los claims del ID Token. Use getClaims() para recuperar el conjunto completo o métodos getter individuales para claims específicos.Control de acceso basado en roles
Control de acceso basado en roles
Puede restringir el acceso a las páginas en función de los roles de Auth0. Primero, agregue roles al ID Token mediante una Action de Auth0 y, después, use
hasAuthority() en su configuración de seguridad.Agregar roles a los tokens
- Vaya a Auth0 Dashboard → Actions → Flows → Login.
- Cree una Action personalizada que agregue roles como un claim personalizado al ID Token:
Configurar la autorización
Actualice suSecurityConfig para requerir roles específicos en los endpoints:Asignación personalizada de autoridades
Asignación personalizada de autoridades
El starter de Okta admite la asignación personalizada de autoridades mediante la interfaz
AuthoritiesProvider. Registre un bean para agregar objetos GrantedAuthority personalizados en función de los atributos del usuario o de fuentes de datos externas.Problemas comunes
Error al redirigir al inicio de sesión: URL de callback no válida
Error al redirigir al inicio de sesión: URL de callback no válida
Después de seleccionar Iniciar sesión, Auth0 muestra un error porque la URL de callback no coincide.Las Allowed Callback URLs de tu aplicación de Auth0 deben coincidir exactamente con la URL de callback que usa Spring Security. La URL predeterminada es
http://localhost:3000/login/oauth2/code/okta.- Ve a Auth0 Dashboard → Applications → Tu aplicación → Settings.
- En Allowed Callback URLs, agrega:
http://localhost:3000/login/oauth2/code/okta. - Selecciona Save Changes.
Issuer no válido al iniciar
Issuer no válido al iniciar
La aplicación no se inicia o el inicio de sesión falla porque el issuer no coincide.
okta.oauth2.issuer debe ser la URL completa del inquilino de Auth0, incluidos https:// y la / final.Error de detección de OIDC al iniciar
Error de detección de OIDC al iniciar
La aplicación no se inicia y muestra un error de conexión al obtener
/.well-known/openid-configuration.Okta Spring Boot Starter obtiene el documento de detección de OpenID Connect desde la URL del issuer al iniciar la aplicación. Verifica que la URL del issuer sea correcta y que se pueda acceder a ella desde tu red. Si estás detrás de un firewall corporativo, configura el proxy:No se encuentran los valores de configuración
No se encuentran los valores de configuración
La aplicación se inicia, pero el inicio de sesión falla porque no se están leyendo las propiedades de configuración.Asegúrate de que
application.yml use la sangría YAML correcta dentro del espacio de nombres okta.oauth2:Cerrar sesión no borra la sesión de Auth0
Cerrar sesión no borra la sesión de Auth0
Después de seleccionar Cerrar sesión, el usuario vuelve a iniciar sesión de inmediato sin ver la página de inicio de sesión de Auth0.Asegúrate de que
SecurityConfig incluya el LogoutHandler personalizado que redirige al endpoint /v2/logout de Auth0. Verifica también que Allowed Logout URLs en la configuración de tu aplicación de Auth0 incluya http://localhost:3000/.Recursos adicionales
Documentación del SDK
Documentación completa del SDK, código fuente y notas de la versión
Documentación de Auth0
Documentación oficial de Auth0 para aplicaciones de Spring Boot
Referencia de Spring Security
Documentación de inicio de sesión con OAuth2 en Spring Security
Referencia de configuración
Todas las propiedades de configuración disponibles de okta.oauth2.*
Auth0 Dashboard
Administra tus API y aplicaciones en Auth0
Foro de la comunidad
Obtén ayuda de la comunidad de Auth0
Aplicación de ejemplo
Ejemplo de inicio de sesión MVC
Incluye inicio de sesión, cierre de sesión y una página de perfil con integración de Auth0 OAuth2
http://localhost:3000 en tu navegador y selecciona el enlace Login para probar el flujo de inicio de sesión con Auth0.