Saltar al contenido principal
Requisitos previos:
  • JDK 17+ (descargar)
  • Maven 3.6+ o Gradle 7+ (Maven | Gradle)
  • Un IDE (se recomienda IntelliJ IDEA, Eclipse o VS Code)
Compatibilidad con versiones de Java: Spring Boot 3.x+ y Okta Spring Boot Starter 3.x requieren Java 17 o superior.

Primeros pasos

Esta guía de inicio rápido muestra cómo añadir el inicio de sesión de Auth0 a una aplicación web de Spring Boot. Crearás una aplicación web segura con inicio de sesión, cierre de sesión y una página de perfil protegida mediante Okta Spring Boot Starter, que configura automáticamente la compatibilidad con el inicio de sesión mediante OAuth2 de Spring Security.
1

Crear un proyecto nuevo

Genera un proyecto de Spring Boot con las dependencias requeridas.
2

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.
3

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:
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:
4

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.
5

Crear controladores y vistas

Crea los controladores y las plantillas de Thymeleaf para las páginas de inicio y perfil.
6

Ejecuta la aplicación

Inicie la aplicación con el wrapper de Maven o Gradle.
La aplicación ya se está ejecutando en http://localhost:3000. Vaya a http://localhost:3000/profile para iniciar el flujo de inicio de sesión de Auth0.
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

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.
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

  1. Vaya a Auth0 DashboardActionsFlowsLogin.
  2. Cree una Action personalizada que agregue roles como un claim personalizado al ID Token:

Configurar la autorización

Actualice su SecurityConfig para requerir roles específicos en los endpoints:
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

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.
  1. Ve a Auth0 DashboardApplications → Tu aplicación → Settings.
  2. En Allowed Callback URLs, agrega: http://localhost:3000/login/oauth2/code/okta.
  3. Selecciona Save Changes.
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.
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:
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:
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

En el repositorio de ejemplos de Auth0 hay disponible una aplicación de ejemplo completa que muestra cómo iniciar sesión, ver el perfil y cerrar sesión con Auth0.

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
Clona y ejecuta:
Abre http://localhost:3000 en tu navegador y selecciona el enlace Login para probar el flujo de inicio de sesión con Auth0.