Zelfstudie: Client verifiëren met Spring Cloud Gateway in Azure Spring Apps
Notitie
De Basic-, Standard- en Enterprise-abonnementen worden afgeschaft vanaf medio maart 2025, met een pensioenperiode van 3 jaar. We raden u aan om over te stappen naar Azure Container Apps. Zie de aankondiging over buitengebruikstelling van Azure Spring Apps voor meer informatie.
Het standaardverbruik en het speciale abonnement worden vanaf 30 september 2024 afgeschaft, met een volledige afsluiting na zes maanden. We raden u aan om over te stappen naar Azure Container Apps. Zie Azure Spring Apps Standard-verbruik en toegewezen abonnement migreren naar Azure Container Apps voor meer informatie.
Dit artikel is van toepassing op:✅ Standaardverbruik en toegewezen (preview)
In deze quickstart ziet u hoe u de communicatie tussen een clienttoepassing en een microservicetoepassing die wordt gehost in Azure Spring Apps beveiligt en wordt afgeschermd met een Spring Cloud Gateway-app. De clienttoepassing wordt geverifieerd als een beveiligingsprincipaal om contact te starten met de microservice die is geïmplementeerd in Azure Spring Apps, met behulp van de app die is gebouwd met Spring Cloud Gateway. Deze methode maakt gebruik van de tokenrelais van Spring Cloud Gateway en de resourceserverfuncties van Spring Security voor de processen van verificatie en autorisatie, die worden gerealiseerd door de uitvoering van de OAuth 2.0-clientreferentiestroom.
In de volgende lijst ziet u de samenstelling van het voorbeeldproject:
- Books SPA: Deze spa met één pagina (SPA), lokaal gehost, communiceert met de books microservice voor het toevoegen of zoeken naar boeken.
- Boeken microservice:
- Een Spring Cloud Gateway-app die wordt gehost in Azure Spring Apps. Deze app werkt als gateway voor de RESTful API's van Books.
- Een Spring Boot RESTful API-app die wordt gehost in Azure Spring Apps. In deze app worden de boekgegevens opgeslagen in een H2-database. De Books-service biedt twee REST-eindpunten voor het schrijven en lezen van boeken.
1. Vereisten
- Een Azure-abonnement. Als u geen abonnement hebt, maakt u een gratis account voordat u begint.
- Git.
- Java Development Kit (JDK), versie 17.
- Een Microsoft Entra-tenant. Zie quickstart: Een nieuwe tenant maken in Microsoft Entra-id voor meer informatie over het maken van een Microsoft Entra-tenant.
- Azure CLI versie 2.45.0 of hoger.
- Installeer Node.js.
2. Het Spring-project voorbereiden
Gebruik de volgende stappen om de app lokaal te klonen en uit te voeren:
Gebruik de volgende opdracht om het voorbeeldproject te klonen vanuit GitHub:
git clone https://github.com/Azure-Samples/azure-spring-apps-sso-client-credential.git -b consumption-plan
Gebruik de volgende opdracht om de back-endservices van Books te bouwen:
cd azure-spring-apps-sso-client-credential ./mvnw clean package
Voer de projectmap BEVEILIGD-WACHTWOORDVERIFICATIE in en gebruik de volgende opdracht om de afhankelijkheden te installeren:
npm install @azure/msal-node
3. De cloudomgeving voorbereiden
De belangrijkste resources die nodig zijn om dit voorbeeld uit te voeren, zijn een Azure Spring Apps-exemplaar en een Azure Database for PostgreSQL-exemplaar. Deze sectie bevat de stappen voor het maken van deze resources.
3.1. Meld u aan bij het Azure Portal
Open uw webbrowser en ga naar Azure Portal. Voer uw referenties in om u aan te melden bij Azure Portal. De standaardweergave is uw service-dashboard.
3.2. Een Azure Spring Apps-exemplaar maken
Gebruik de volgende stappen om een service-exemplaar te maken:
Selecteer Een resource maken in de hoek van Azure Portal.
Selecteer Compute>Azure Spring Apps.
Vul het formulier Basisbeginselen in met de volgende gegevens:
Instelling Voorgestelde waarde Beschrijving Abonnement De naam van uw abonnement Het Azure-abonnement dat u wilt gebruiken voor uw server. Als u meerdere abonnementen hebt, kiest u het abonnement waarin u wilt worden gefactureerd voor de resource. Resourcegroep myresourcegroup Een nieuwe resourcegroepnaam of een bestaande naam uit uw abonnement. Naam myasa Een unieke naam die uw Azure Spring Apps-service identificeert. De naam moet tussen de 4 en 32 tekens lang zijn en mag alleen kleine letters, cijfers en afbreekstreepjes bevatten. Het eerste teken van de servicenaam moet een letter zijn en het laatste teken moet een letter of een cijfer zijn. Plannen Standaardverbruik en toegewezen (preview) Het prijsplan bepaalt de resources en kosten die aan uw exemplaar zijn gekoppeld. Regio De regio het dichtst bij uw gebruikers De locatie die zich het dichtst bij uw gebruikers bevindt. Container Apps-omgeving myacaenv Selecteer welk Container Apps-omgevingsexemplementatie hetzelfde virtuele netwerk moet delen met andere services en resources. Gebruik de volgende tabel als richtlijn voor het maken van de Container Apps-omgeving:
Instelling Voorgestelde waarde Beschrijving Omgevingsnaam myacaenv Een unieke naam die uw Azure Container Apps Environment-service identificeert. Plannen Verbruik Het prijsplan bepaalt de resources en kosten die aan uw exemplaar zijn gekoppeld. Zoneredundant Uitgeschakeld Of u uw Container Apps Environment-service in een Azure-beschikbaarheidszone wilt maken. Belangrijk
Het workloadprofiel Verbruik heeft een factureringsmodel voor betalen per gebruik, zonder beginkosten. U wordt gefactureerd voor het toegewezen workloadprofiel op basis van de ingerichte resources. Zie Workloadprofielen in de structuuromgevingen Consumption + Dedicated-planstructuur in Azure Container Apps (preview) en Prijzen voor Azure Spring Apps voor meer informatie.
Selecteer Controleren en Maken om uw selecties te controleren. Selecteer Maken om het Azure Spring Apps-exemplaar in te richten.
Selecteer het pictogram Meldingen (een klok) op de werkbalk om het implementatieproces te bewaken. Nadat de implementatie is voltooid, kunt u Vastmaken aan dashboard selecteren. Hiermee maakt u een tegel voor deze service op uw Azure Portal-dashboard als snelkoppeling naar de overzichtspagina van de service. Selecteer Ga naar de resource om de overzichtspagina van de service te openen.
Gebruik de volgende opdracht om de Eureka-server in te schakelen. Vervang de tijdelijke aanduidingen door uw eigen waarden die u in de vorige stap hebt gemaakt.
az spring eureka-server enable \ --resource-group <resource-group-name> \ --name <Azure-Spring-Apps-instance-name>
3.3. De toepassing Books registreren
Deze sectie bevat de stappen voor het registreren van een toepassing voor het toevoegen van app-rollen in Microsoft Entra ID, die wordt gebruikt voor het beveiligen van de RESTful-API's in Azure Spring Apps.
Ga naar de startpagina van Azure Portal.
Als u toegang hebt tot meerdere tenants, gebruikt u het filter Directory + abonnement ( ) om de tenant te selecteren waarin u een toepassing wilt registreren.
Zoek Microsoft Entra ID en selecteer deze.
Selecteer onder Beheren de optie App-registraties>Nieuwe registratie.
Voer een naam in voor uw toepassing in het veld Naam , bijvoorbeeld Boeken. Gebruikers van uw app kunnen de naam zien. U kunt deze later wijzigen.
Bij Ondersteunde accounttypen selecteert u Enkel accounts in deze organisatieadreslijst.
Selecteer Registreren om de toepassing te maken.
Zoek de waarde Toepassings-id (client) op de app-pagina Overzicht en noteer deze voor gebruik later. U hebt het nodig om het YAML-configuratiebestand voor dit project te configureren.
Selecteer onder Beheren een API beschikbaar maken, zoek de URI van de toepassings-id aan het begin van de pagina en selecteer vervolgens Toevoegen.
Accepteer op de pagina URI van de toepassings-id bewerken de voorgestelde URI voor de toepassings-id (
api://{client ID}
) of gebruik een betekenisvolle naam in plaats van de client-id, zoalsapi://books
en selecteer Opslaan.Selecteer onder Beheren de app-rollen>App-rol maken en voer vervolgens de volgende gegevens in:
- Voer schrijven in bij Weergavenaam.
- Selecteer Toepassingen voor toegestane lidtypen.
- Voer boeken.schrijven in als waarde.
- Voer voor Beschrijving boeken toevoegen in.
Herhaal de vorige stap om een andere app-rol toe te voegen:
Books.Read
.
3.4. De SPA-toepassing registreren
De RESTful API-app books fungeert als een resourceserver, die wordt beveiligd door Microsoft Entra ID. Voordat u een toegangstoken verkrijgt, moet u een andere toepassing registreren in De Microsoft Entra-id en machtigingen verlenen aan de clienttoepassing, die de naam SPA
heeft.
Ga terug naar uw tenant in Microsoft Entra-id.
Selecteer onder Beheren de optie App-registraties>Nieuwe registratie.
Voer bijvoorbeeld een naam in voor uw toepassing in het veld
SPA
Naam.Gebruik voor ondersteunde accounttypen alleen de standaardaccounts in deze organisatiemap.
Selecteer Registreren om de toepassing te maken.
Zoek de waarde Toepassings-id (client) op de app-pagina Overzicht en noteer deze voor gebruik later. U hebt het nodig om het toegangstoken te verkrijgen.
Selecteer API-machtigingen>Voeg een machtigings-API>toe die door mijn organisatie wordt gebruikt. Selecteer de
Books
toepassing die u eerder hebt geregistreerd, selecteer de machtigingen Books.Read en Books.Write en selecteer vervolgens Machtigingen toevoegen.Selecteer Beheerderstoestemming verlenen voor <de naam> van uw tenant om beheerderstoestemming te verlenen voor de machtigingen die u hebt toegevoegd.
Navigeer naar Certificaten en geheimen en selecteer vervolgens Nieuw clientgeheim.
Voer op de pagina Een clientgeheim toevoegen een beschrijving in voor het geheim, selecteer een vervaldatum en selecteer vervolgens Toevoegen.
Zoek de waarde van het geheim en noteer het voor later gebruik. U hebt het nodig om een toegangstoken te verkrijgen.
3.5. De configuratie van de Boekenservice-app bijwerken
Zoek boekenservice/src/main/resources/application.yml-bestand voor de books-service
app. Werk de configuratie in de spring.cloud.azure.active-directory
sectie bij zodat deze overeenkomt met het volgende voorbeeld. Vervang de tijdelijke aanduidingen door de waarden die u eerder hebt gemaakt.
spring:
cloud:
azure:
active-directory:
credential:
client-id: <your-application-ID-of-Books>
app-id-uri: <your-application-ID-URI-of-Books>
Gebruik de volgende opdracht om het voorbeeldproject opnieuw te bouwen:
./mvnw clean package
4. De apps implementeren in Azure Spring Apps
In de volgende stappen ziet u hoe u de apps implementeert in Azure.
4.1. De microservice-apps implementeren in Azure Spring Apps
Gebruik de volgende stappen om de apps te implementeren in Azure Spring Apps met behulp van de Maven-invoegtoepassing voor Azure Spring Apps:
Navigeer naar de voorbeeldprojectmap en gebruik vervolgens de volgende opdracht om de app te configureren in Azure Spring Apps:
./mvnw com.microsoft.azure:azure-spring-apps-maven-plugin:1.18.0:config
In de volgende lijst worden de opdrachteninteracties beschreven:
- Selecteer onderliggende modules die u wilt configureren (invoernummers gescheiden door komma, bijvoorbeeld: [1-2,4,6], ENTER om ALLES te selecteren): druk op Enter om alles te selecteren.
- OAuth2-aanmelding: autoriseren van de aanmelding bij Azure op basis van het OAuth2-protocol.
- Abonnement selecteren: selecteer het abonnementslijstnummer van het Azure Spring Apps-exemplaar dat u hebt gemaakt. Dit is standaard het eerste abonnement in de lijst. Als u het standaardnummer gebruikt, drukt u rechtstreeks op Enter .
- Selecteer Azure Spring Apps voor implementatie: selecteer het lijstnummer van het Azure Spring Apps-exemplaar dat u hebt gemaakt. Als u het standaardnummer gebruikt, drukt u rechtstreeks op Enter .
- Selecteer apps om openbare toegang beschikbaar te maken: (invoernummers gescheiden door komma, bijvoorbeeld: [1-2,4,6], ENTER om GEEN te selecteren): Voer 1 voor
gateway-service
in. - Bevestig dat u alle bovenstaande configuraties (Y/n) wilt opslaan: voer y in. Als u n invoert, wordt de configuratie niet opgeslagen in de POM-bestanden.
Gebruik de volgende opdracht om de app te implementeren:
./mvnw azure-spring-apps:deploy
In de volgende lijst wordt de interactie met de opdracht beschreven:
- OAuth2-aanmelding: u moet de aanmelding bij Azure autoriseren op basis van het OAuth2-protocol.
Nadat de opdracht is uitgevoerd, ziet u de volgende logboekberichten, die aangeven dat de implementatie is geslaagd.
[INFO] Getting public url of app(gateway-service)... [INFO] Application url: https://gateway-service.xxxxxxxxxxxxxx-xxxxxxxx.eastasia.azurecontainerapps.io ... [INFO] Artifact(books-service-0.0.1-SNAPSHOT.jar) is uploaded and deployment(default) is successfully updated. ...
De URL van de uitvoertoepassing is het basiseindpunt voor toegang tot de ToDo RESTful API-toepassing.
4.2. De beveiligd-WACHTWOORDVERIFICATIE-app lokaal uitvoeren
Werk de configuratie in de spa van het SPA
toepassingsscriptbestand/server.js bij zodat deze overeenkomt met het volgende voorbeeld. Vervang de tijdelijke aanduidingen door uw eigen waarden die u in de vorige stap hebt gemaakt.
const SpringCloudGatewayURL = "<URL exposed by app gateway-service>"
const msalConfig = {
auth: {
clientId: "< SPA App Registration ClientId>",
authority: "https://login.microsoftonline.com/< TenantId >/",
clientSecret: "<SPA App Registration ClientSecret>",
},
};
const tokenRequest = {
scopes: ["<Application ID URI of Books>/.default"]
};
Gebruik in de projectmap beveiligd-WACHTWOORDVERIFICATIE de volgende opdracht om lokaal uit te voeren:
node server.js
Notitie
De beveiligd-WACHTWOORDVERIFICATIE-app is een statische webtoepassing die kan worden geïmplementeerd op elke webserver.
5. De app valideren
U hebt toegang tot de boeken-BEVEILIGD-WACHTWOORDVERIFICATIE-app die via de gateway-service
app communiceert met de RESTful API's van Books.
Ga naar
http://localhost:3000
in uw browser om toegang te krijgen tot de toepassing.Voer waarden in voor Auteur en Titel en selecteer Vervolgens Boek toevoegen. U ziet een antwoord dat lijkt op het volgende voorbeeld:
Book added successfully: {"id":1,"author":"Jeff Black","title":"Spring In Action"}
6. Resources opschonen
U kunt de Azure-resourcegroep verwijderen, met alle resources uit de resourcegroep. Gebruik de volgende stappen om de hele resourcegroep te verwijderen, inclusief de zojuist gemaakte service:
Zoek de resourcegroep in Azure Portal.
Selecteer Resourcegroepen en selecteer vervolgens de naam van uw resourcegroep, bijvoorbeeld myresourcegroup.
Selecteer Verwijderen op de pagina van de resourcegroep. Voer de naam van uw resourcegroep in het tekstvak in om het verwijderen te bevestigen.
Selecteer Verwijderen.
7. Volgende stappen
Raadpleeg voor meer informatie de volgende artikelen: