Delen via


Java Tomcat-apps implementeren in Azure-app Service

In dit artikel leest u hoe u een Tomcat-app implementeert met aanmelding door een Microsoft Entra-account voor Azure-app Service.

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:

Vereisten

De Maven-invoegtoepassing configureren

Wanneer u implementeert in Azure-app Service, gebruikt de implementatie automatisch uw Azure-referenties van de Azure CLI. Als de Azure CLI niet lokaal is geïnstalleerd, verifieert de Maven-invoegtoepassing zich met OAuth of apparaataanmelding. Zie verificatie met Maven-invoegtoepassingen voor meer informatie.

Gebruik de volgende stappen om de invoegtoepassing te configureren:

  1. Voer de volgende opdracht uit om de implementatie te configureren. Met deze opdracht kunt u het besturingssysteem Azure-app Service, de Java-versie en de Tomcat-versie instellen.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
    
  2. Als u een nieuwe uitvoeringsconfiguratie wilt maken, drukt u op Y en vervolgens op Enter.

  3. Voor De waarde Definiëren voor het besturingssysteem drukt u op 1 voor Windows of 2 voor Linux en drukt u vervolgens op Enter.

  4. Druk voor De waarde definiëren voor javaVersion op 2 voor Java 11 en druk vervolgens op Enter.

  5. Druk voor De waarde definiëren voor webContainer op 4 voor Tomcat 9.0 en druk vervolgens op Enter.

  6. Voor Waarde definiëren voor pricingTier drukt u op Enter om de standaard P1v2-laag te selecteren.

  7. Voor Bevestigen drukt u op Y en drukt u vervolgens op Enter.

In het volgende voorbeeld ziet u de uitvoer van het implementatieproces:

Please confirm webapp properties
AppName : msal4j-servlet-auth-1707209552268
ResourceGroup : msal4j-servlet-auth-1707209552268-rg
Region : centralus
PricingTier : P1v2
OS : Linux
Java Version: Java 11
Web server stack: Tomcat 9.0
Deploy to slot : false
Confirm (Y/N) [Y]: [INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  37.112 s
[INFO] Finished at: 2024-02-06T08:53:02Z
[INFO] ------------------------------------------------------------------------

Nadat u uw keuzes hebt bevestigd, voegt de invoegtoepassing het vereiste invoegtoepassingselement en de vereiste instellingen toe aan het pom.xml-bestand van uw project om uw app te configureren voor uitvoering in Azure-app Service.

Het relevante gedeelte van het pom.xml-bestand moet er ongeveer uitzien als in het volgende voorbeeld:

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

U kunt de configuraties voor App Service rechtstreeks in uw pom.xml wijzigen. Enkele algemene configuraties worden vermeld in de volgende tabel:

Eigenschappen Vereist Beschrijving
subscriptionId false De abonnements-id.
resourceGroup true De Azure-resourcegroep voor uw app.
appName true De naam van uw app.
region false De regio waarin u uw app wilt hosten. De standaardwaarde is centralus. Zie Ondersteunde regio's voor geldige regio's.
pricingTier false De prijscategorie voor uw app. De standaardwaarde is P1v2 voor een productieworkload. De aanbevolen minimumwaarde voor Java-ontwikkeling en -tests is B2. Zie App Service-prijzen voor meer informatie.
runtime false De configuratie van de runtime-omgeving. Zie Configuratiedetails voor meer informatie.
deployment false De implementatieconfiguratie. Zie Configuratiedetails voor meer informatie.

Zie de referentiedocumentatie van de invoegtoepassing voor de volledige lijst met configuraties. Alle Azure Maven-invoegtoepassingen delen een algemene set configuraties. Zie Common Configurations voor deze configuraties. Zie de Azure-app: Configuratiedetails voor configuraties die specifiek zijn voor Azure-app Service.

Zorg ervoor dat u de appName waarden en resourceGroup waarden opslaat voor later gebruik.

De app voorbereiden voor implementatie

Wanneer u uw toepassing implementeert in App Service, verandert uw omleidings-URL in de omleidings-URL van uw geïmplementeerde app-exemplaar. Gebruik de volgende stappen om deze instellingen in het eigenschappenbestand te wijzigen:

  1. Navigeer naar het bestand authentication.properties van uw app en wijzig de waarde van de domeinnaam van app.homePage uw geïmplementeerde app, zoals wordt weergegeven in het volgende voorbeeld. Als u bijvoorbeeld in de vorige stap voor uw app-naam hebt gekozen example-domain , moet u deze nu gebruiken https://example-domain.azurewebsites.net voor de app.homePage waarde. Zorg ervoor dat u ook het protocol hebt gewijzigd van http in https.

    # 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
    
  2. Nadat u dit bestand hebt opgeslagen, gebruikt u de volgende opdracht om uw app opnieuw te bouwen:

    mvn clean package
    

De registratie van uw Microsoft Entra ID-app bijwerken

Omdat de omleidings-URI wordt gewijzigd in uw geïmplementeerde app in Azure-app Service, 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:

  1. Ga naar de pagina App-registraties in het Microsoft identity platform voor ontwikkelaars.

  2. Gebruik het zoekvak om te zoeken naar uw app-registratie, java-servlet-webapp-authenticationbijvoorbeeld.

  3. Open uw app-registratie door de naam te selecteren.

  4. Selecteer in het menu de optie Verificatie.

  5. Selecteer URI toevoegen in de sectie Webomleidings-URI's - .

  6. Vul de URI van uw app in, bijvoorbeeld /auth/redirect https://<your-app-name>.azurewebsites.net/auth/redirect.

  7. Selecteer Opslaan.

De app implementeren

U bent nu klaar om uw app te implementeren in Azure-app Service. Gebruik de volgende opdracht om ervoor te zorgen dat u bent aangemeld bij uw Azure-omgeving om de implementatie uit te voeren:

az login

Nu alle configuraties klaar zijn in uw pom.xml-bestand , kunt u nu de volgende opdracht gebruiken om uw Java-app in Azure te implementeren:

mvn package azure-webapp:deploy

Nadat de implementatie is voltooid, is uw toepassing gereed op http://<your-app-name>.azurewebsites.net/. Open de URL met uw lokale webbrowser, waar u de startpagina van de msal4j-servlet-auth toepassing zou moeten zien.

Geheime waarden verwijderen

Het bestand authentication.properties van de toepassing bevat momenteel de waarde van uw clientgeheim in de aad.secret parameter. Het is niet raadzaam om deze waarde in dit bestand te bewaren. Mogelijk neemt u ook een risico als u deze doorvoert in een Git-opslagplaats.

Als extra beveiligingsstap kunt u deze waarde opslaan in Azure Key Vault en Key Vault-verwijzingen gebruiken om deze beschikbaar te maken in uw toepassing.

Gebruik de volgende stappen om de waarde van aad.secret Key Vault te verplaatsen en deze in uw code te gebruiken:

  1. Gebruik de volgende opdrachten om een Azure Key Vault-exemplaar te maken:

    export RESOURCE_GROUP=<your-resource-group-name>
    export KEY_VAULT=<your-key-vault-name>
    az keyvault create \
        --resource-group $RESOURCE_GROUP \
        --name $KEY_VAULT
    
  2. Gebruik de volgende opdrachten om de geheime waarde van aad.secret uw sleutelkluis toe te voegen als een nieuw geheim:

    az keyvault secret set \
        --vault-name $KEY_VAULT \
        --name "AADSECRET" \
        --value "<the-value-of-your-client-secret>"
    
  3. U moet nu uw app toegang geven tot uw sleutelkluis. Als u deze taak wilt uitvoeren, maakt u eerst een nieuwe identiteit voor uw app met behulp van de volgende opdrachten:

    export WEB_APP_NAME=<your-web-app-name>
    az webapp identity assign \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME
    
  4. Gebruik de volgende opdrachten om deze identiteit get en list machtiging te geven voor de geheimen in uw 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
    
  5. Gebruik de volgende opdracht om een toepassingsinstelling te maken in uw app die gebruikmaakt van een sleutelkluisverwijzing naar het geheim in uw sleutelkluis. Met deze instelling wordt de waarde van het geheim beschikbaar voor uw app als omgevingsvariabele.

    az webapp config appsettings set \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME \
        --settings AADSECRET='@Microsoft.KeyVault(VaultName=$KEY_VAULT;SecretName=AADSECRET)'
    
  6. Gebruik de volgende code om deze waarde uit de omgevingsvariabelen te laden. Wijzig in het bestand \src\main\java\com\microsoft\azuresamples\msal4j\helpers\Config.java , op regel 41, de huidige instructie in de volgende regel:

    public static final String SECRET = System.getenv("AADSECRET");
    
  7. U kunt nu de aad.secret sleutel en waarde uit het bestand authentication.properties verwijderen.

  8. Bouw de code opnieuw met behulp van de volgende opdracht:

    mvn clean package
    
  9. Implementeer de toepassing opnieuw met behulp van de volgende opdracht:

    mvn package azure-webapp:deploy
    

Uw implementatie is nu voltooid.

Meer informatie