Compartir a través de


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:

Captura de pantalla del cuadro de diálogo

Requisitos previos

Los siguientes requisitos previos son necesarios para seguir los pasos descritos en este artículo:

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

  1. Vaya a https://start.spring.io/.

  2. Especifique que quiere generar un proyecto de Maven con Java, escriba los nombres de Group (Grupo) y Artifact (Artefacto) de su aplicación.

  3. Agregue dependencias para Spring Web, Microsoft Entra ID y OAuth2 Client.

  4. En la parte inferior de la página, seleccione el botón GENERATE (Generar).

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

  1. Inicie sesión en https://portal.azure.com.

  2. Seleccione Todos los servicios, Identidad y, después , Microsoft Entra ID.

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

  4. Cuando haya terminado, seleccione el vínculo que se muestra para acceder al nuevo directorio.

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

  1. En el menú del portal, seleccione Registros de aplicaciones y, a continuación, seleccione Registrar una aplicación.

  2. Especifique la aplicación y, a continuación, seleccione Registrar.

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

  4. En el panel de navegación izquierdo, seleccione Certificados y secretos. A continuación, seleccione Nuevo secreto de cliente.

    Captura de pantalla de la pantalla

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

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

    Captura de pantalla de la aplicación con el nuevo secreto de cliente resaltado.

  7. En la página principal del registro de la aplicación, seleccione Autenticación y seleccione Agregar una plataforma. Después, seleccione Aplicaciones web.

  8. Escriba http://localhost:8080/login/oauth2/code/ como un nuevo valor de URI de redirección y, a continuación, seleccione Configurar.

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

  1. En la página Información general de Active Directory, seleccione Usuarios y, a continuación, seleccione Nuevo usuario.

  2. Cuando se muestre el panel Usuario, especifique los valores de Nombre de usuario y Nombre. Seleccione Crear.

    Captura de pantalla del cuadro de diálogo

    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

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

    Captura de pantalla de la pantalla

  4. En la página Información general del directorio De Microsoft Entra, seleccione Aplicaciones empresariales.

  5. Seleccione Todas las aplicaciones y, después, seleccione la aplicación a la que agregó el rol de aplicación en un paso anterior.

  6. Seleccione Usuarios y grupos y, luego, Agregar usuario o grupo.

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

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

  1. Extraiga los archivos del proyecto que creó y descargó en un directorio anteriormente en este tutorial.

  2. Vaya a la carpeta src/main/resources del proyecto y abra el archivo application.properties en un editor de texto.

  3. 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=22222222-2222-2222-2222-222222222222
    # Specifies your App Registration's Application ID:
    spring.cloud.azure.active-directory.credential.client-id=11111111-1111-1111-1111-1111111111111111
    # Specifies your App Registration's secret key:
    spring.cloud.azure.active-directory.credential.client-secret=AbCdEfGhIjKlMnOpQrStUvWxYz==
    

    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.
  4. Guarde y cierre el archivo application.properties.

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

  6. Cree un archivo de Java nuevo llamado HelloController.java en la carpeta controller y ábralo en un editor de texto.

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

  1. Abra un símbolo del sistema y cambie el directorio a la carpeta donde se encuentra el archivo pom.xml de su aplicación.

  2. Compile la aplicación de Spring Boot con Maven y ejecútela. Por ejemplo:

    mvn clean package
    mvn spring-boot:run
    
  3. 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.

    Captura de pantalla del cuadro de diálogo

    Nota:

    Se le pedirá que cambie su contraseña si es el primer inicio de sesión de una cuenta de usuario nueva.

    Captura de pantalla del cuadro de diálogo

  4. Cuando haya iniciado sesión correctamente, verá ver el texto de ejemplo "Admin message" (Mensaje del administrador) desde el controlador.

    Captura de pantalla del mensaje de administrador de la aplicación.

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

Pasos siguientes

Para más información acerca de Spring y Azure, vaya al centro de documentación de Azure.