Inicio rápido: Adición de inicio de sesión con Microsoft a 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 Azure Active Directory (Azure AD) pueden iniciar sesión en la aplicación.
Para obtener información general, consulte el diagrama del 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
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 Azure Portal: Registros de aplicaciones.
- 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 Azure Portal.
- Si tiene acceso a varios inquilinos, use el filtro Directorios y suscripciones
del menú superior para ir al inquilino en el que quiere registrar la aplicación. - Busque y seleccione Azure Active Directory.
- En Administrar, seleccione Registros de aplicaciones.
- 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/mecomo 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 1: Configuración de la aplicación en Azure Portal
Para usar el código de ejemplo en este inicio rápido:
- Agregar las direcciones URL de respuesta
https://localhost:8443/msal4jsample/secure/aadyhttps://localhost:8443/msal4jsample/graph/me. - Crear un secreto de cliente.
La aplicación está configurada con estos atributos.
Paso 2: Descargar el código de ejemplo
Descargue el proyecto y extraiga el archivo .zip en una carpeta cerca de la raíz de la unidad. Por ejemplo, C:\Azure-Samples.
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.
Nota
Enter_the_Supported_Account_Info_Here
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.authorityyaad.secretKeypor 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_herees 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=testCertColoque el archivo del almacén de claves generado en la carpeta resources.
Paso 3: Ejecución del ejemplo de código
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 de información, seleccione el botón Inicio de sesión para redirigir los usuarios a Azure Active Directory y solicite a los usuarios 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 ejecute
mvn packagepara compilar el proyecto.- Este comando generará el archivo msal-web-sample-0.1.0.war en el directorio /targets.
- Cambie el nombre de este 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.
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: