Java Spring Boot-apps implementeren in Azure Container Apps
In dit artikel leest u hoe u een Java Spring Boot-app implementeert met aanmelding door een Microsoft Entra-account in Azure Container Apps.
In dit artikel wordt ervan uitgegaan dat u een van de volgende artikelen hebt voltooid met alleen het tabblad Lokaal uitvoeren en dat u nu wilt implementeren in Azure. Deze instructies zijn hetzelfde als de instructies op het tabblad Implementeren in Azure in deze artikelen:
- Java Spring Boot-apps beveiligen met behulp van Microsoft Entra-id
- Java Spring Boot-apps beveiligen met Azure Active Directory B2C
- Java Spring Boot-apps inschakelen om gebruikers aan te melden en toegang te krijgen tot Microsoft Graph
- Java Spring Boot-apps beveiligen met behulp van rollen en rolclaims
- Java Spring Boot-apps beveiligen met behulp van groepen en groepsclaims
Vereisten
- Een Azure-account. Als u nog geen account hebt, kunt u een gratis account maken. U hebt de machtiging
Contributor
ofOwner
voor het Azure-abonnement nodig om door te gaan. Zie voor meer informatie Azure-rollen toewijzen met behulp van de Azure-portal. - De Azure CLI.
- De CLI-extensie, versie
0.3.47
of hoger van Azure Container Apps. Gebruik deaz extension add --name containerapp --upgrade --allow-preview
opdracht om de nieuwste versie te installeren. - De Java Development Kit, versie 17 of hoger.
- Maven.
Het Spring-project voorbereiden
Gebruik de volgende stappen om het project voor te bereiden:
Gebruik de volgende Maven-opdracht om het project te bouwen:
mvn clean verify
Voer het voorbeeldproject lokaal uit met behulp van de volgende opdracht:
mvn spring-boot:run
Instellingen
Als u zich wilt aanmelden bij Azure vanuit de CLI, voert u de volgende opdracht uit en volgt u de aanwijzingen om het verificatieproces te voltooien.
az login
Voer de upgradeopdracht uit om ervoor te zorgen dat u de nieuwste versie van de CLI uitvoert.
az upgrade
Installeer of werk vervolgens de Azure Container Apps-extensie voor de CLI bij.
Als u fouten ontvangt over ontbrekende parameters wanneer u opdrachten uitvoert az containerapp
in Azure CLI, moet u ervoor zorgen dat de nieuwste versie van de Azure Container Apps-extensie is geïnstalleerd.
az extension add --name containerapp --upgrade
Notitie
Vanaf mei 2024 schakelen Azure CLI-extensies standaard geen preview-functies meer in. Als u toegang wilt krijgen tot de preview-functies van Container Apps, installeert u de Container Apps-extensie met --allow-preview true
.
az extension add --name containerapp --upgrade --allow-preview true
Nu de huidige extensie of module is geïnstalleerd, registreert u de Microsoft.App
en Microsoft.OperationalInsights
naamruimten.
Notitie
Azure Container Apps-resources zijn gemigreerd van de Microsoft.Web
naamruimte naar de Microsoft.App
naamruimte. Raadpleeg de naamruimtemigratie van Microsoft.Web naar Microsoft.App in maart 2022 voor meer informatie.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
De Azure Container Apps-omgeving maken
Nu uw Azure CLI-installatie is voltooid, kunt u de omgevingsvariabelen definiëren die in dit artikel worden gebruikt.
Definieer de volgende variabelen in uw bash-shell.
export RESOURCE_GROUP="ms-identity-containerapps"
export LOCATION="canadacentral"
export ENVIRONMENT="env-ms-identity-containerapps"
export API_NAME="ms-identity-api"
export JAR_FILE_PATH_AND_NAME="./target/ms-identity-spring-boot-webapp-0.0.1-SNAPSHOT.jar"
Maak een resourcegroep.
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION \
Maak een omgeving met een automatisch gegenereerde Log Analytics-werkruimte.
az containerapp env create \
--name $ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--location $LOCATION
Het standaarddomein van de container-app-omgeving weergeven. Noteer dit domein voor gebruik in latere secties.
az containerapp env show \
--name $ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--query properties.defaultDomain
De app voorbereiden voor implementatie
Wanneer u uw toepassing implementeert in Azure Container Apps, verandert uw omleidings-URL in de omleidings-URL van uw geïmplementeerde app-exemplaar in Azure Container Apps. Gebruik de volgende stappen om deze instellingen in uw application.yml-bestand te wijzigen:
Navigeer naar het bestand src\main\resources\application.yml van uw app en wijzig de waarde van de domeinnaam van
post-logout-redirect-uri
uw geïmplementeerde app, zoals wordt weergegeven in het volgende voorbeeld. Zorg ervoor dat u de werkelijke waarden vervangt<API_NAME>
en<default-domain-of-container-app-environment>
vervangt. Met het standaarddomein voor uw Azure Container App-omgeving uit de vorige stap enms-identity-api
voor de naam van uw app gebruikt uhttps://ms-identity-api.<default-domain>
bijvoorbeeld voor depost-logout-redirect-uri
waarde.post-logout-redirect-uri: https://<API_NAME>.<default-domain-of-container-app-environment>
Nadat u dit bestand hebt opgeslagen, gebruikt u de volgende opdracht om uw app opnieuw te bouwen:
mvn clean package
Belangrijk
Het application.yml-bestand van de toepassing bevat momenteel de waarde van uw clientgeheim in de client-secret
parameter. Het is niet raadzaam om deze waarde in dit bestand te bewaren. Mogelijk neemt u ook een risico als u het bestand doorvoert in een Git-opslagplaats. Zie Geheimen beheren in Azure Container Apps voor de aanbevolen aanpak.
De registratie van uw Microsoft Entra ID-app bijwerken
Omdat de omleidings-URI wordt gewijzigd in uw geïmplementeerde app in Azure Container Apps, moet u ook de omleidings-URI wijzigen in de registratie van uw Microsoft Entra ID-app. Gebruik de volgende stappen om deze wijziging aan te brengen:
Ga naar de pagina App-registraties in het Microsoft identity platform voor ontwikkelaars.
Gebruik het zoekvak om te zoeken naar uw app-registratie,
java-servlet-webapp-authentication
bijvoorbeeld.Open uw app-registratie door de naam te selecteren.
Selecteer in het menu de optie Verificatie.
Selecteer URI toevoegen in de sectie Webomleidings-URI's - .
Vul de URI van uw app in, bijvoorbeeld
/login/oauth2/code/
https://<containerapp-name>.<default domain of container app environment>/login/oauth2/code/
.Selecteer Opslaan.
De app implementeren
Implementeer het JAR-pakket in Azure Container Apps.
Notitie
Indien nodig kunt u de JDK-versie opgeven in de omgevingsvariabelen van de Java-build. Zie Omgevingsvariabelen bouwen voor Java in Azure Container Apps voor meer informatie.
U kunt nu uw WAR-bestand implementeren met de az containerapp up
CLI-opdracht.
az containerapp up \
--name $API_NAME \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--environment $ENVIRONMENT \
--artifact <JAR_FILE_PATH_AND_NAME> \
--ingress external \
--target-port 8080 \
--query properties.configuration.ingress.fqdn
Notitie
De standaardversie van JDK is 17. Als u de JDK-versie wilt wijzigen voor compatibiliteit met uw toepassing, kunt u het --build-env-vars BP_JVM_VERSION=<YOUR_JDK_VERSION>
argument gebruiken om het versienummer aan te passen.
Zie Omgevingsvariabelen bouwen voor Java in Azure Container Apps voor meer omgevingsvariabelen.
De app valideren
In dit voorbeeld bevat de containerapp up
opdracht het --query properties.configuration.ingress.fqdn
argument, dat de FQDN (Fully Qualified Domain Name) retourneert, ook wel de URL van de app genoemd. Gebruik de volgende stappen om de logboeken van de app te controleren om een implementatieprobleem te onderzoeken:
Open de URL van de uitvoertoepassing op de pagina Uitvoer van de sectie Implementatie .
Selecteer in het navigatiedeelvenster van de overzichtspagina van het Azure Container Apps-exemplaar logboeken om de logboeken van de app te controleren.
Meer informatie
- Microsoft Identity Platform (Microsoft Entra ID voor ontwikkelaars)
- Overzicht van Microsoft Authentication Library (MSAL)
- Snelstart: Een toepassing registreren op het Microsoft-identiteitsplatform
- Quickstart: Een clienttoepassing configureren voor toegang tot web-API's
- Informatie over toestemmingservaringen voor Microsoft Entra ID-toepassingen
- Toestemming van gebruiker en beheerder
- Overzicht van toepassings- en service-principalobjecten in Microsoft Entra ID
- Nationale clouds
- MSAL-codevoorbeelden
- Microsoft Entra ID Spring Boot Starter-clientbibliotheek voor Java
- Microsoft Authentication Library voor Java (MSAL4J)
- MSAL4J Wiki
- Id-tokens
- Toegangstokens in het Microsoft Identity Platform
Volgende stappen
Zie de volgende artikelen voor meer informatie en andere implementatieopties: