Implementación de aplicaciones de JBoss EAP de Java en Azure App Service
En este artículo se muestra cómo implementar una aplicación de JBoss EAP con el inicio de sesión de la cuenta de Microsoft Entra en Azure App Service.
En este artículo se asume que ha completado uno de los siguientes artículos utilizando únicamente la pestaña Ejecutar localmente , y que ahora desea realizar el despliegue en Azure. Estas instrucciones son las mismas que las de la pestaña Implementación en Azure de estos artículos:
- Habilitar el inicio de sesión para aplicaciones de JBoss EAP de Java mediante el identificador de Microsoft Entra
- Habilitación del inicio de sesión para aplicaciones Java JBoss EAP mediante MSAL4J con Azure Active Directory B2C
- Habilitar aplicaciones Java JBoss EAP para permitir a los usuarios iniciar sesión y acceder a Microsoft Graph
- Protección de aplicaciones Java JBoss EAP mediante roles y notificaciones de roles
- Asegurar aplicaciones Java JBoss EAP mediante grupos y reclamaciones de grupo
Prerrequisitos
complemento Maven para aplicaciones de Azure App Service
Si Maven no es su herramienta de desarrollo preferida, consulte los siguientes tutoriales similares que usan otras herramientas:
Configuración del complemento maven
El proceso de implementación del Servicio de Aplicaciones de Azure utiliza automáticamente tus credenciales de Azure desde la CLI de Azure. Si la CLI de Azure no está instalada localmente, el complemento maven se autentica con el inicio de sesión de dispositivo o OAuth. Para más información, consulte Autenticación con los complementos de Maven.
Siga estos pasos para configurar el complemento:
Ejecute el comando de Maven que se muestra junto para configurar la implementación. Este comando le ayuda a configurar el sistema operativo de App Service, la versión de Java y la versión de Tomcat.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
En Crear nueva configuración de ejecución, pulse Y y, a continuación, pulse Intro.
En Definir valor para el sistema operativo, pulse 2 para Linux y, a continuación, pulse Intro.
En Definir valor para javaVersion, pulse 2 para Java 11 y, a continuación, pulse Intro.
En Definir valor para webContainer, pulse 1 para JBosseap7 y, a continuación, pulse Entrar.
En Definir valor para pricingTier, pulse Entrar para seleccionar el nivel P1v3 predeterminado.
En Confirmar, pulse Y y, a continuación, pulse Entrar.
En el ejemplo siguiente se muestra la salida del proceso de implementación:
Please confirm webapp properties
AppName : msal4j-servlet-auth-1707220080695
ResourceGroup : msal4j-servlet-auth-1707220080695-rg
Region : centralus
PricingTier : P1v3
OS : Linux
Java Version: Java 11
Web server stack: JBosseap 7
Deploy to slot : false
Confirm (Y/N) [Y]:
[INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 26.196 s
[INFO] Finished at: 2024-02-06T11:48:16Z
[INFO] ------------------------------------------------------------------------
Después de confirmar las opciones, el complemento agrega la configuración del complemento y los valores necesarios al archivo pom.xml del proyecto para configurar la aplicación para que se ejecute en Azure App Service.
La parte pertinente del archivo pom.xml debe ser similar al ejemplo siguiente:
<build>
<plugins>
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>>azure-webapp-maven-plugin</artifactId>
<version>x.xx.x</version>
<configuration>
<schemaVersion>v2</schemaVersion>
<resourceGroup>your-resourcegroup-name</resourceGroup>
<appName>your-app-name</appName>
...
</configuration>
</plugin>
</plugins>
</build>
Las configuraciones de App Service se pueden modificar directamente en el archivo pom.xml. En la tabla siguiente se enumeran algunas configuraciones comunes:
Propiedad | Obligatorio | Descripción | Versión |
---|---|---|---|
schemaVersion |
falso | Versión del esquema de configuración. Los valores admitidos son v1 y v2 . |
1.5.2 |
subscriptionId |
falso | Identificador de suscripción. | 0.1.0+ |
resourceGroup |
true | El grupo de recursos de Azure para la aplicación. | 0.1.0+ |
appName |
true | Nombre de la aplicación. | 0.1.0+ |
region |
falso | Región en la que se va a hospedar la aplicación. El valor predeterminado es centralus . Para ver las regiones válidas, consulte Regiones Soportadas. |
0.1.0+ |
pricingTier |
falso | Plan de tarifa de la aplicación. El valor predeterminado es P1v2 para una carga de trabajo de producción. El valor mínimo recomendado para desarrollo y pruebas de Java es B2 . Para más información, consulte Precios de App Service |
0.1.0+ |
runtime |
falso | Configuración del entorno en tiempo de ejecución. Para obtener más información, vea Detalles de configuración. | 0.1.0+ |
deployment |
falso | Configuración de implementación. Para obtener más información, vea Detalles de configuración. | 0.1.0+ |
Para obtener la lista completa de configuraciones, consulte la documentación de referencia del complemento. Todos los complementos de Azure Maven comparten un conjunto común de configuraciones. Para estas configuraciones, consulte Configuraciones comunes. Para conocer las configuraciones específicas de Azure App Service, consulte aplicación de Azure: Detalles de configuración.
Asegúrese de guardar los valores de appName
y resourceGroup
para su uso posterior.
Preparación de la aplicación para la implementación
Al implementar la aplicación en App Service, la dirección URL de redireccionamiento cambia a la dirección URL de redireccionamiento de la instancia de aplicación implementada. Siga estos pasos para cambiar esta configuración en el archivo de propiedades:
Acceda al archivo authentication.properties de la aplicación y cambie el valor de
app.homePage
por el nombre de dominio de la aplicación implementada, tal como se muestra en el ejemplo siguiente. Por ejemplo, si eligióexample-domain
para el nombre de la aplicación en el paso anterior, ahora debe usarhttps://example-domain.azurewebsites.net
para el valor deapp.homePage
. Asegúrese de que también ha cambiado el protocolo dehttp
ahttps
.# app.homePage is by default set to dev server address and app context path on the server # for apps deployed to azure, use https://your-sub-domain.azurewebsites.net app.homePage=https://<your-app-name>.azurewebsites.net
Después de guardar este archivo, use el siguiente comando para volver a generar la aplicación:
mvn clean package
Actualización del registro de la aplicación microsoft Entra ID
Como el URI de redireccionamiento cambia en la aplicación implementada en Azure App Service, también debe cambiar el URI de redireccionamiento en el registro de la aplicación de Microsoft Entra ID. Siga estos pasos para realizar este cambio:
Vaya a la página de registros de aplicaciones en la plataforma de identidad de Microsoft para desarrolladores .
Use el cuadro de búsqueda para buscar el registro de la aplicación; por ejemplo,
java-servlet-webapp-authentication
.Para abrir el registro de la aplicación, seleccione su nombre.
Seleccione Autenticar desde el menú.
En la sección Web - URIs de redireccionamiento, seleccione Agregar URI.
Rellene el URI de la aplicación, anexando
/auth/redirect
( por ejemplo,https://<your-app-name>.azurewebsites.net/auth/redirect
.Seleccione Guardar.
Implementación de la aplicación
Ya está listo para implementar la aplicación en Azure App Service. Use el comando siguiente para asegurarse de que ha iniciado sesión en el entorno de Azure para ejecutar la implementación:
az login
Con toda la configuración lista en el archivo pom.xml, ahora puede usar el siguiente comando para implementar la aplicación Java en Azure:
mvn package azure-webapp:deploy
Una vez completada la implementación, la aplicación está lista en http://<your-app-name>.azurewebsites.net/
. Abra la dirección URL con el explorador web local, donde debería ver la página de inicio de la aplicación msal4j-servlet-auth
.
Quitar valores secretos
El archivo authentication.properties de la aplicación contiene actualmente el valor del secreto de cliente en el parámetro aad.secret
. No es recomendable mantener este valor en este archivo. Es posible que también tome algunos riesgos si lo confirma en un repositorio de Git.
Como paso adicional de seguridad, puede almacenar este valor en Azure Key Vault y usar Referencias de Key Vault para que esté disponible en su aplicación.
Siga estos pasos para mover el valor de aad.secret
a Key Vault y usarlo en el código:
Use los comandos siguientes para crear una instancia de Azure Key Vault:
export RESOURCE_GROUP=<your-resource-group-name> export KEY_VAULT=<your-key-vault-name> az keyvault create \ --resource-group $RESOURCE_GROUP \ --name $KEY_VAULT
Usa los siguientes comandos para agregar el valor secreto de
aad.secret
a tu bóveda de claves como un nuevo secreto.az keyvault secret set \ --vault-name $KEY_VAULT \ --name "AADSECRET" \ --value "<the-value-of-your-client-secret>"
Ahora debe conceder a la aplicación acceso al almacén de claves. Para realizar esta tarea, cree primero una nueva identidad para la aplicación mediante los siguientes comandos:
export WEB_APP_NAME=<your-web-app-name> az webapp identity assign \ --resource-group $RESOURCE_GROUP \ --name $WEB_APP_NAME
Use los siguientes comandos para conceder a esta identidad permiso
get
ylist
en los secretos de Key Vault:export IDENTITY=$(az webapp identity show \ --resource-group $RESOURCE_GROUP \ --name $WEB_APP_NAME \ --query principalId \ --output tsv) az keyvault set-policy \ --resource-group $RESOURCE_GROUP \ --name $KEY_VAULT \ --secret-permissions get list \ --object-id $IDENTITY
Use el siguiente comando para crear una configuración de aplicación en la aplicación que use una referencia de Key Vault al secreto en Key Vault. Esta configuración hace que el valor del secreto esté disponible para la aplicación como una variable de entorno.
az webapp config appsettings set \ --resource-group $RESOURCE_GROUP \ --name $WEB_APP_NAME \ --settings AADSECRET='@Microsoft.KeyVault(VaultName=$KEY_VAULT;SecretName=AADSECRET)'
Use el código siguiente para cargar este valor desde las variables de entorno. En el archivo \src\main\java\com\microsoft\azuresamples\msal4j\helpers\Config.java, en la línea 41, cambie la instrucción actual a la siguiente línea:
public static final String SECRET = System.getenv("AADSECRET");
Ahora puede eliminar la clave
aad.secret
y el valor del archivo authentication.properties.Vuelva a generar el código mediante el comando siguiente:
mvn clean package
Vuelva a implementar la aplicación mediante el comando siguiente:
mvn package azure-webapp:deploy
El despliegue ya está completo.
Más información
- Biblioteca de autenticación de Microsoft (MSAL) para Java
- Plataforma de identidad de Microsoft
- Inicio rápido: Registro de una aplicación con la plataforma de identidad de Microsoft
- Comprensión de las experiencias de consentimiento de aplicaciones de Microsoft Entra ID
- Descripción del consentimiento del usuario y del administrador
- ejemplos de código de MSAL