Inicio rápido: Inicie sesión por los usuarios y llame a Microsoft Graph API desde una aplicación web de Java
En este inicio rápido descargará y ejecutará un código de ejemplo que muestra cómo una aplicación web de Java puede realizar el inicio de sesión de usuarios y llamar a Microsoft Graph API. Los usuarios de cualquier organización de Microsoft Entra pueden iniciar sesión en la aplicación.
Para ilustrar este tema, consulte el apartado en el que se explica el funcionamiento del ejemplo.
Requisitos previos
Para ejecutar esta muestra, necesita:
- Kit de desarrollo de Java (JDK) 8 o superior.
- Maven.
Registro y descarga de la aplicación de inicio rápido
Sugerencia
Los pasos de este artículo pueden variar ligeramente en función del portal desde donde comienza.
Hay dos formas de iniciar la aplicación de inicio rápido: rápido (opción 1) y manual (opción 2).
Opción 1: Registrar y configurar de modo automático una aplicación y, luego, descargar el código de ejemplo
- Vaya a la experiencia de inicio rápido Centro de administración de Microsoft Entra: Registros de aplicaciones como administrador de aplicaciones en la nube como mínimo.
- Escriba un nombre para la aplicación y seleccione Registrar.
- Siga las instrucciones de la experiencia de inicio rápido del portal para descargar el código de aplicación configurado automáticamente.
Opción 2: registrar y configurar manualmente la aplicación y el código de ejemplo
Paso 1: Registrar su aplicación
Para registrar una aplicación y agregarle manualmente información del registro de la aplicación, siga estos pasos:
- Inicie sesión en el Centro de administración de Microsoft Entra como Administrador de aplicaciones en la nube.
- Si tiene acceso a varios inquilinos, use el icono Configuración del menú superior para cambiar al inquilino en el que desea registrar la aplicación desde el menú Directorios y suscripciones.
- Vaya a Identidad>Aplicaciones>Registros de aplicaciones y seleccione Nuevo registro.
- Escriba el nombre de la aplicación, por ejemplo, java-webapp. Los usuarios de la aplicación verían este nombre. Puede cambiarlo posteriormente.
- Seleccione Registrar.
- En la página Información general, anote los valores de Id. de aplicación (cliente) e Id. de directorio (inquilino) . Estos valores se necesitarán más adelante.
- En Administrar, seleccione Autenticación.
- Seleccione Agregar una plataforma>Web.
- En la sección URI de redirección, escriba
https://localhost:8443/msal4jsample/secure/aad
. - Seleccione Configurar.
- En la sección Web, en URI de redirección, escriba
https://localhost:8443/msal4jsample/graph/me
como un segundo identificador URI de redirección. - En Administrar, seleccione Certificados y secretos. En la sección Secretos de cliente, seleccione Nuevo secreto de cliente.
- Escriba una descripción de la clave (por ejemplo, secreto de aplicación), deje el valor de expiración predeterminado y seleccione Agregar.
- Anote el valor del secreto de cliente. Lo necesitará más adelante.
Paso 2: Descargar el código de ejemplo
Descargar el código de ejemplo
Paso 3: Configurar el ejemplo de código
Extraiga el archivo zip en una carpeta local.
Opcional. Si usa un entorno de desarrollo integrado, abra el ejemplo en dicho entorno.
Abra el archivo application.properties. Puede encontrarlo en la carpeta src/main/resources/ . Reemplace los valores de los campos
aad.clientId
,aad.authority
yaad.secretKey
por los de identificador de aplicación, identificador de inquilino y secreto de cliente, respectivamente. Así es como debería ser:aad.clientId=Enter_the_Application_Id_here aad.authority=https://login.microsoftonline.com/Enter_the_Tenant_Info_Here/ aad.secretKey=Enter_the_Client_Secret_Here aad.redirectUriSignin=https://localhost:8443/msal4jsample/secure/aad aad.redirectUriGraph=https://localhost:8443/msal4jsample/graph/me aad.msGraphEndpointHost="https://graph.microsoft.com/"
En el código anterior:
Enter_the_Application_Id_here
es el identificador de la aplicación que registró.Enter_the_Client_Secret_Here
: es el valor de Secreto de cliente que creó en Certificados y secretos para la aplicación registrada.Enter_the_Tenant_Info_Here
: es el valor de Id. de directorio (inquilino) de la aplicación que registró.
- Para usar HTTPS con localhost, especifique las propiedades de
server.ssl.key
. Para generar un certificado autofirmado, use la utilidad keytool (que se incluye en JRE).
Este es un ejemplo:
keytool -genkeypair -alias testCert -keyalg RSA -storetype PKCS12 -keystore keystore.p12 -storepass password
server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=password
server.ssl.key-alias=testCert
- Coloque el archivo del almacén de claves generado en la carpeta resources.
Paso 4: Ejecución del ejemplo de código
Para ejecutar el proyecto, realice uno de estos pasos:
- Ejecútelo directamente desde el IDE, para lo que debe usar el servidor de Spring Boot insertado.
- Empaquételo en un archivo WAR mediante Maven y, a continuación, impleméntelo en una solución de contenedor de J2EE como Apache Tomcat.
Ejecución del proyecto desde un entorno de desarrollo integrado
Para ejecutar la aplicación web en un entorno de desarrollo integrado, seleccione la ejecución y vaya a la página principal del proyecto. En este ejemplo, la dirección URL de la Página principal estándar es https://localhost:8443.
En la página principal, seleccione el botón Iniciar sesión para redirigir a los usuarios a Microsoft Entra ID y solicitarles sus credenciales.
Una vez autenticados los usuarios, se les redirige a
https://localhost:8443/msal4jsample/secure/aad
. Ya han iniciado sesión y la página mostrará información sobre la cuenta de usuario. La interfaz de usuario de ejemplo tiene estos botones:- Sign Out (Cerrar sesión): Cierra la sesión del usuario actual en la aplicación y lo redirige a la página principal.
- Mostrar información de usuario: Adquiere un token para Microsoft Graph y llama a Microsoft Graph con una solicitud que contiene el token, que devuelve información básica sobre el usuario que inició sesión.
Ejecución del proyecto desde Tomcat
Si desea implementar el ejemplo web en Tomcat, realice un par de cambios en el código fuente.
Abra ms-identity-java-webapp/src/main/java/com.microsoft.azure.msalwebsample/MsalWebSampleApplication.
Elimine todo el código fuente y reemplácelo por este:
package com.microsoft.azure.msalwebsample; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class MsalWebSampleApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(MsalWebSampleApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(MsalWebSampleApplication.class); } }
El puerto HTTP predeterminado de Tomcat es el 8080, pero se necesita una conexión HTTPS en el puerto 8443. Para configurar este valor:
Vaya a tomcat/conf/server.xml.
Busque la etiqueta
<connector>
y reemplace el conector existente por este:<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="C:/Path/To/Keystore/File/keystore.p12" keystorePass="KeystorePassword" clientAuth="false" sslProtocol="TLS"/>
Abra una ventana de símbolo del sistema. Vaya a la carpeta raíz de este ejemplo (donde se encuentra el archivo
pom.xml
) y ejecutemvn package
para compilar el proyecto.- Este comando generará un archivo
msal-web-sample-0.1.0.war
en el directorio/targets
. - Cambie el nombre del archivo a
msal4jsample.war
. - Implemente el archivo .WAR mediante Tomcat, o cualquier otra solución de contenedor de J2EE.
- Para implementar el archivo
msal4jsample.war
, cópielo en el directorio/webapps/
de la instalación de Tomcat e inicie el servidor de Tomcat.
- Para implementar el archivo
- Este comando generará un archivo
Una vez implementado el archivo, vaya a
https://localhost:8443/msal4jsample
mediante un explorador.
Importante
Esta aplicación de inicio rápido usa un secreto de cliente para identificarse como un cliente confidencial. Dado que el secreto de cliente se agrega como texto sin formato a los archivos del proyecto, por motivos de seguridad se recomienda utilizar un certificado, en lugar de un secreto de cliente, antes de usar la aplicación en un entorno de producción. Para más información sobre cómo usar un certificado, consulte Credenciales de certificado para la autenticación de la aplicación.
Más información
Funcionamiento del ejemplo
Obtención de MSAL
MSAL for Java (MSAL4J) es la biblioteca de Java que se usa para que inicien sesión los usuarios y solicitar los tokens que se usan para acceder a una API que está protegida por la plataforma de Microsoft Identity.
Agregue MSAL4J a la aplicación con Maven o Gradle para administrar las dependencias al realizar los cambios siguientes en el archivo pom.xml (Maven) o build.gradle (Gradle) de la aplicación.
En pom.xml:
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>msal4j</artifactId>
<version>1.0.0</version>
</dependency>
En build.gradle:
compile group: 'com.microsoft.azure', name: 'msal4j', version: '1.0.0'
Inicializar MSAL
Agregue una referencia a MSAL for Java, para lo que debe incorporar el código siguiente al principio del archivo en el que va a usar MSAL4J:
import com.microsoft.aad.msal4j.*;
Ayuda y soporte técnico
Si necesita ayuda, desea informar de un problema o desea obtener información sobre las opciones de soporte técnico, consulte Opciones de ayuda y soporte técnico para desarrolladores.
Pasos siguientes
Para obtener información más detallada sobre la compilación de aplicaciones web que inicien sesión de los usuarios en la plataforma de identidad de Microsoft, consulte la serie de escenarios de varias partes: