Delen via


Java JBoss EAP-apps implementeren in Azure App Service

In dit artikel leest u hoe u een JBoss EAP-app implementeert met aanmelding door een Microsoft Entra-account in Azure App Service.

In dit artikel wordt ervan uitgegaan dat u een van de volgende artikelen hebt voltooid met behulp van alleen het tabblad Lokaal uitvoeren en u nu wilt implementeren in Azure. Deze instructies zijn hetzelfde als de instructies in het tabblad Implementeren in Azure in deze artikelen:

Voorwaarden

De Maven-invoegtoepassing configureren

Het implementatieproces naar Azure App Service maakt automatisch gebruik van uw Azure-referenties vanuit 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-invoegtoepassingenvoor meer informatie.

Gebruik de volgende stappen om de invoegtoepassing te configureren:

  1. Voer de Maven-opdracht uit die wordt weergegeven naast het configureren van de implementatie. Met deze opdracht kunt u het App Service-besturingssysteem, de Java-versie en de Tomcat-versie instellen.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
    
  2. Druk voor Nieuwe uitvoeringsconfiguratie makenop Y-en druk vervolgens op Enter-.

  3. Druk voor Waarde definiëren voor het besturingssysteemop 2 voor Linux en druk vervolgens op Enter-.

  4. Druk op om de waarde voor javaVersion te definiëren, druk op 2 voor Java 11 en druk vervolgens op Enter.

  5. Druk voor Waarde definiëren voor webContainerop 1 voor JBosseap7 en druk vervolgens op Enter-.

  6. Druk voor Waarde definiëren voor pricingTierop Enter- om de standaardlaag P1v3 te selecteren.

  7. Druk voor Bevestigenop Yen druk vervolgens op Enter.

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

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

Nadat u uw keuzes hebt bevestigd, voegt de invoegtoepassing de configuratie van de invoegtoepassing 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.xmlwijzigen. Enkele algemene configuraties worden vermeld in de volgende tabel:

Eigenschap Vereist Beschrijving Versie
schemaVersion vals De versie van het configuratieschema. Ondersteunde waarden zijn v1 en v2. 1.5.2
subscriptionId vals De ID van het abonnement. 0.1.0+
resourceGroup waar De Azure-resourcegroep voor uw app. 0.1.0+
appName waar De naam van uw app. 0.1.0+
region vals De regio waarin u uw app wilt hosten. De standaardwaarde is centralus. Zie Ondersteunde regio'svoor geldige regio's. 0.1.0+
pricingTier vals De prijscategorie voor uw app. De standaardwaarde is P1v2- voor een productieworkload. De aanbevolen minimumwaarde voor Java-ontwikkeling en -testen is B2. Zie App Service-prijzen voor meer informatie 0.1.0+
runtime vals De configuratie van de runtime-omgeving. Zie Configuratiedetailsvoor meer informatie. 0.1.0+
deployment vals De uitrolconfiguratie. Zie Configuratiedetailsvoor meer informatie. 0.1.0+

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

Bewaar de appName en resourceGroup waarden 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 bestand en wijzig de waarde van app.homePage in de domeinnaam van uw geïmplementeerde app, zoals wordt weergegeven in het volgende voorbeeld. Als u bijvoorbeeld example-domain hebt gekozen voor de naam van uw app in de vorige stap, moet u nu https://example-domain.azurewebsites.net gebruiken voor de app.homePage waarde. Zorg ervoor dat u het protocol ook 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. Navigeer naar het Microsoft Identity Platform voor ontwikkelaars App-registraties-pagina.

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

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

  4. Selecteer Authentication in het menu.

  5. Selecteer in de sectie Web - Redirect URI's de optie Voeg URI toe.

  6. Vul de URI van uw app in, waarbij u /auth/redirect toevoegt, bijvoorbeeld 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 te implementeren in Azure:

mvn package azure-webapp:deploy

Nadat de implementatie is voltooid, is uw toepassing klaar 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 parameter aad.secret. 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 naar 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 als een nieuw geheim toe te voegen aan uw sleutelkluis:

    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 naar de volgende regel:

    public static final String SECRET = System.getenv("AADSECRET");
    
  7. U kunt nu de 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