Agregar inicio de sesión con una cuenta de Microsoft Entra a una aplicación web de Spring
En este artículo se muestra cómo desarrollar una aplicación web de Spring que admita el inicio de sesión por cuenta de Microsoft Entra. Después de finalizar todos los pasos de este artículo, la aplicación web le redirigirá a la página de inicio de sesión de Microsoft Entra cuando se acceda de forma anónima. En la captura de pantalla siguiente se muestra la página de inicio de sesión de Microsoft Entra:
Requisitos previos
Los siguientes requisitos previos son necesarios para seguir los pasos descritos en este artículo:
- Un kit de desarrollo de Java (JDK) admitido Para más información sobre los JDK disponibles para desarrollar en Azure, consulte Compatibilidad con Java en Azure y Azure Stack.
- Apache Maven, versión 3.0 o posterior.
- Suscripción a Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita.
Importante
Se requiere Spring Boot versión 2.5 o posterior para completar los pasos descritos en este artículo.
Creación de una aplicación con Spring Initialzr
Vaya a https://start.spring.io/.
Especifique que quiere generar un proyecto de Maven con Java, escriba los nombres de Group (Grupo) y Artifact (Artefacto) de su aplicación.
Agregue dependencias para Spring Web, Microsoft Entra ID y OAuth2 Client.
En la parte inferior de la página, seleccione el botón GENERATE (Generar).
Cuando se le solicite, descargue el proyecto en una ruta de acceso del equipo local.
Creación de una instancia de Microsoft Entra
Creación de la instancia de Active Directory
Si es el administrador de una instancia existente, puede omitir este proceso.
Inicie sesión en https://portal.azure.com.
Seleccione Todos los servicios, Identidad y, después , Microsoft Entra ID.
Rellene los campos Nombre de la organización y Nombre de dominio inicial. Copie la dirección URL completa del directorio. Usará la dirección URL para agregar cuentas de usuario más adelante en este tutorial. (Por ejemplo,
azuresampledirectory.onmicrosoft.com
).Copie la dirección URL completa del directorio. Usará la dirección URL para agregar cuentas de usuario más adelante en este tutorial. (Por ejemplo:
azuresampledirectory.onmicrosoft.com
).Cuando haya terminado, seleccione Crear. La creación de los recursos tardará unos minutos.
Cuando haya terminado, seleccione el vínculo que se muestra para acceder al nuevo directorio.
Copie el Id. de inquilino. Utilizará el valor del identificador para configurar el archivo application.properties más adelante en este tutorial.
Adición de un registro de aplicación para la aplicación de Spring Boot
En el menú del portal, seleccione Registros de aplicaciones y, a continuación, seleccione Registrar una aplicación.
Especifique la aplicación y, a continuación, seleccione Registrar.
Cuando aparezca la página del registro de aplicaciones, copie los valores de Id. de aplicación (cliente) y de Id. de directorio (inquilino). Usará estos valores para configurar el archivo application.properties más adelante en este tutorial.
En el panel de navegación izquierdo, seleccione Certificados y secretos. A continuación, seleccione Nuevo secreto de cliente.
Agregue una Descripción y seleccione la duración en la lista Expiración. Seleccione Agregar. El valor de la clave se rellenará automáticamente.
Copie y guarde el valor del secreto de cliente para configurar el archivo application.properties más adelante en este tutorial. (No podrá recuperar este valor más adelante).
En la página principal del registro de la aplicación, seleccione Autenticación y seleccione Agregar una plataforma. Después, seleccione Aplicaciones web.
Escriba http://localhost:8080/login/oauth2/code/ como un nuevo valor de URI de redirección y, a continuación, seleccione Configurar.
Si ha modificado el archivo de pom.xml para usar una versión de inicio de Microsoft Entra anterior a la 3.0.0: en Concesión implícita y flujos híbridos, seleccione Tokens de identificador (usados para flujos implícitos e híbridos), seleccione Guardar.
Adición de una cuenta de usuario al directorio y adición de esa cuenta a un appRole
En la página Información general de Active Directory, seleccione Usuarios y, a continuación, seleccione Nuevo usuario.
Cuando se muestre el panel Usuario, especifique los valores de Nombre de usuario y Nombre. Seleccione Crear.
Nota:
Al escribir el nombre de usuario, debe especificar la dirección URL del directorio que usamos anteriormente en este tutorial. Por ejemplo:
test-user@azuresampledirectory.onmicrosoft.com
En la página principal del registro de la aplicación, seleccione Roles de la aplicación y después Create app role (Crear rol de la aplicación). Proporcione valores para los campos del formulario, seleccione ¿Desea habilitar este rol de aplicación? y, después, seleccione Aplicar.
En la página Información general del directorio De Microsoft Entra, seleccione Aplicaciones empresariales.
Seleccione Todas las aplicaciones y, después, seleccione la aplicación a la que agregó el rol de aplicación en un paso anterior.
Seleccione Usuarios y grupos y, luego, Agregar usuario o grupo.
En Usuarios, seleccione Ninguno seleccionado. Seleccione el usuario que creó anteriormente, seleccione Seleccionar y, después, Asignar. Si creó más de un rol de aplicación anteriormente, seleccione uno de ellos.
Vuelva al panel Usuarios, seleccione el usuario de prueba, seleccione Restablecer contraseña y copie la contraseña. Usará la contraseña al iniciar sesión en la aplicación más adelante en este tutorial.
Configuración y compilación de la aplicación
Extraiga los archivos del proyecto que creó y descargó en un directorio anteriormente en este tutorial.
Vaya a la carpeta src/main/resources del proyecto y abra el archivo application.properties en un editor de texto.
Especifique la configuración del registro de aplicación con los valores que creó anteriormente. Por ejemplo:
# Enable related features. spring.cloud.azure.active-directory.enabled=true # Specifies your Active Directory ID: spring.cloud.azure.active-directory.profile.tenant-id=<tenant-ID> # Specifies your App Registration's Application ID: spring.cloud.azure.active-directory.credential.client-id=<client-ID> # Specifies your App Registration's secret key: spring.cloud.azure.active-directory.credential.client-secret=<client-secret>
Donde:
Parámetro Descripción spring.cloud.azure.active-directory.enabled
Habilitación de las características proporcionadas por spring-cloud-azure-starter-active-directory spring.cloud.azure.active-directory.profile.tenant-id
Contiene su Id. de directorio de Active Directory obtenido anteriormente. spring.cloud.azure.active-directory.credential.client-id
Contiene el Id. de aplicación del registro de aplicaciones que completó anteriormente. spring.cloud.azure.active-directory.credential.client-secret
Contiene el Valor de la clave del registro de aplicaciones que completó anteriormente. Guarde y cierre el archivo application.properties.
Cree una carpeta llamada controller en la carpeta de fuentes de Java de la aplicación. Por ejemplo: src/main/java/com/wingtiptoys/security/controller.
Cree un archivo de Java nuevo llamado HelloController.java en la carpeta controller y ábralo en un editor de texto.
Escriba el código siguiente, guarde el archivo y ciérrelo:
package com.wingtiptoys.security; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.security.access.prepost.PreAuthorize; @RestController public class HelloController { @GetMapping("Admin") @ResponseBody @PreAuthorize("hasAuthority('APPROLE_Admin')") public String Admin() { return "Admin message"; } }
Compilación y prueba de la aplicación
Abra un símbolo del sistema y cambie el directorio a la carpeta donde se encuentra el archivo pom.xml de su aplicación.
Compile la aplicación de Spring Boot con Maven y ejecútela. Por ejemplo:
mvn clean package mvn spring-boot:run
Después de que Maven haya compilado e iniciado la aplicación, abra
http://localhost:8080/Admin
en un explorador web. Se le pedirá el nombre de usuario y la contraseña.Nota:
Se le pedirá que cambie su contraseña si es el primer inicio de sesión de una cuenta de usuario nueva.
Cuando haya iniciado sesión correctamente, verá ver el texto de ejemplo "Admin message" (Mensaje del administrador) desde el controlador.
Resumen
En este tutorial, creó una nueva aplicación web de Java con Microsoft Entra Starter, configuró un nuevo inquilino de Microsoft Entra, registró una nueva aplicación en el inquilino y, a continuación, configuró la aplicación para usar las anotaciones y clases de Spring para proteger la aplicación web.
Consulte también
- Para más información sobre las nuevas opciones de la interfaz de usuario, consulte Inicio rápido: Registro de una aplicación en la plataforma de identidad de Microsoft.
Pasos siguientes
Para más información acerca de Spring y Azure, vaya al centro de documentación de Azure.