Självstudie: Autentisera klienten med Spring Cloud Gateway i Azure Spring Apps
Kommentar
Basic-, Standard- och Enterprise-planerna kommer att vara inaktuella från och med mitten av mars 2025, med en 3-årig pensionsperiod. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i meddelandet om azure Spring Apps-pensionering.
Standardförbrukningen och den dedikerade planen kommer att vara inaktuell från och med den 30 september 2024, med en fullständig avstängning efter sex månader. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i Migrera Azure Spring Apps Standard-förbrukning och dedikerad plan till Azure Container Apps.
Den här artikeln gäller för: ✔️ Standardförbrukning och dedikerad (förhandsversion)
Den här snabbstarten visar hur du skyddar kommunikationen mellan ett klientprogram och ett mikrotjänstprogram som finns i Azure Spring Apps och som är avskärmat med en Spring Cloud Gateway-app. Klientprogrammet verifieras som ett säkerhetsobjekt för att initiera kontakt med mikrotjänsten som distribueras i Azure Spring Apps med hjälp av appen som skapats med Spring Cloud Gateway. Den här metoden använder Spring Cloud Gateways tokenrelä och Spring Securitys resursserverfunktioner för processerna för autentisering och auktorisering, som realiseras genom körningen av OAuth 2.0-klientens autentiseringsuppgifter.
I följande lista visas exempelprojektets sammansättning:
- Books SPA: Det här spa-programmet (Single Page Application), som finns lokalt, interagerar med mikrotjänsten Böcker för att lägga till eller söka efter böcker.
- Böcker mikrotjänst:
- En Spring Cloud Gateway-app som finns i Azure Spring Apps. Den här appen fungerar som en gateway till BOOKS RESTful-API:er.
- En Spring Boot RESTful API-app som finns i Azure Spring Apps. Den här appen lagrar bokinformationen i en H2-databas. Tjänsten Böcker exponerar två REST-slutpunkter för att skriva och läsa böcker.
1. Förutsättningar
- En Azure-prenumeration Om du inte har någon prenumeration skapar du ett kostnadsfritt konto innan du börjar.
- Git.
- Java Development Kit (JDK), version 17.
- En Microsoft Entra-klientorganisation. Mer information om hur du skapar en Microsoft Entra-klient finns i Snabbstart: Skapa en ny klientorganisation i Microsoft Entra-ID.
- Azure CLI version 2.45.0 eller senare.
- Installera Node.js.
2. Förbereda Spring-projektet
Använd följande steg för att klona och köra appen lokalt:
Använd följande kommando för att klona exempelprojektet från GitHub:
git clone https://github.com/Azure-Samples/azure-spring-apps-sso-client-credential.git -b consumption-plan
Använd följande kommando för att skapa serverdelstjänsterna för Böcker:
cd azure-spring-apps-sso-client-credential ./mvnw clean package
Ange SPA-projektkatalogen och använd följande kommando för att installera beroendena:
npm install @azure/msal-node
3. Förbereda molnmiljön
De viktigaste resurserna som krävs för att köra det här exemplet är en Azure Spring Apps-instans och en Azure Database for PostgreSQL-instans. Det här avsnittet innehåller stegen för att skapa dessa resurser.
3.1. Logga in på Azure-portalen
Öppna webbläsaren och gå till Azure Portal. Ange dina autentiseringsuppgifter för att logga in på Azure Portal. Standardvyn är instrumentpanelen.
3.2. Skapa en Azure Spring Apps-instans
Använd följande steg för att skapa en tjänstinstans:
Välj Skapa en resurs i hörnet av Azure Portal.
Välj Beräkna>Azure Spring Apps.
Fyll i formuläret Grundläggande med följande information:
Inställning Föreslaget värde beskrivning Prenumeration Namnet på din prenumeration Den Azure-prenumeration som ska användas för servern. Om du har flera prenumerationer väljer du den prenumeration där du vill debiteras för resursen. Resursgrupp myresourcegroup Ett nytt resursgruppnamn eller ett befintligt namn i prenumerationen. Name myasa Ett unikt namn som identifierar din Azure Spring Apps-tjänst. Namnet måste vara mellan 4 och 32 tecken långt och får endast innehålla gemener, siffror och bindestreck. Det första tecknet i tjänstnamnet måste vara en bokstav och det sista tecknet måste vara antingen en bokstav eller ett tal. Planera Standardförbrukning och dedikerad (förhandsversion) Prisplanen avgör vilka resurser och kostnader som är kopplade till din instans. Region Den region som är närmast dina användare Den plats som är närmast dina användare. Container Apps-miljö myacaenv Välj vilken Container Apps-miljöinstans som ska dela samma virtuella nätverk med andra tjänster och resurser. Använd följande tabell som en guide för att skapa containerappmiljön:
Inställning Föreslaget värde beskrivning Miljönamn myacaenv Ett unikt namn som identifierar din Azure Container Apps Environment-tjänst. Planera Förbrukning Prisplanen avgör vilka resurser och kostnader som är kopplade till din instans. Zonredundant Disabled (Inaktiverat) Om du vill skapa din Container Apps Environment-tjänst i en Azure-tillgänglighetszon. Viktigt!
Förbrukningsarbetsbelastningsprofilen har en faktureringsmodell för användningsbaserad betalning utan startkostnad. Du debiteras för den dedikerade arbetsbelastningsprofilen baserat på de etablerade resurserna. Mer information finns i Arbetsbelastningsprofiler i Förbrukning + Dedikerade planstrukturmiljöer i Azure Container Apps (förhandsversion) och Prissättning för Azure Spring Apps.
Välj Granska och skapa för att granska dina val. Välj Skapa för att etablera Azure Spring Apps-instansen.
Välj ikonen Aviseringar (en bjällra) i verktygsfältet för att övervaka distributionsprocessen. När distributionen är klar kan du välja Fäst på instrumentpanelen, vilket skapar en panel för den här tjänsten på din Azure Portal instrumentpanel som en genväg till tjänstens översiktssida. Välj Gå till resurs för att öppna tjänstens översiktssida.
Använd följande kommando för att aktivera Eureka-servern. Se till att ersätta platshållarna med dina egna värden som du skapade i föregående steg.
az spring eureka-server enable \ --resource-group <resource-group-name> \ --name <Azure-Spring-Apps-instance-name>
3.3. Registrera programmet Böcker
Det här avsnittet innehåller stegen för att registrera ett program för att lägga till approller i Microsoft Entra-ID, som används för att skydda RESTful-API:erna i Azure Spring Apps.
Gå till startsidan för Azure Portal.
Om du har åtkomst till flera klienter använder du filtret Katalog + prenumeration ( ) för att välja den klientorganisation där du vill registrera ett program.
Sök efter och markera Microsoft Entra ID.
Under Hantera väljer du Appregistreringar> Ny registrering.
Ange ett namn för ditt program i fältet Namn , till exempel Böcker. Användare av din app kan se det här namnet och du kan ändra det senare.
För Kontotyper som stöds väljer du Endast konton i den här organisationskatalogen.
Välj Registrera för att skapa programmet.
På appöversiktssidan letar du efter värdet program-ID (klient) och registrerar det för senare användning. Du behöver den för att konfigurera YAML-konfigurationsfilen för det här projektet.
Under Hantera väljer du Exponera ett API, letar upp program-ID-URI:n i början av sidan och väljer sedan Lägg till.
På sidan Redigera program-ID-URI accepterar du den föreslagna program-ID-URI:n (
api://{client ID}
) eller använder ett beskrivande namn i stället för klient-ID:t, till exempelapi://books
, och väljer sedan Spara.Under Hantera väljer du Approller>Skapa approll och anger sedan följande information:
- Som Visningsnamn anger du Skriv.
- För Tillåtna medlemstyper väljer du Program.
- Som Värde anger du Books.Write.
- Som Beskrivning anger du Lägga till böcker.
Upprepa föregående steg för att lägga till en annan approll:
Books.Read
.
3.4. Registrera SPA-programmet
Appen Books RESTful API fungerar som en resursserver som skyddas av Microsoft Entra-ID. Innan du hämtar en åtkomsttoken måste du registrera ett annat program i Microsoft Entra-ID och bevilja behörigheter till klientprogrammet, som heter SPA
.
Gå tillbaka till din klientorganisation i Microsoft Entra-ID.
Under Hantera väljer du Appregistreringar> Ny registrering.
Ange ett namn för ditt program i fältet Namn , till exempel
SPA
.För kontotyper som stöds använder du endast standardkontona i den här organisationskatalogen.
Välj Registrera för att skapa programmet.
På appöversiktssidan letar du efter värdet program-ID (klient) och registrerar det för senare användning. Du behöver den för att hämta åtkomsttoken.
Välj API-behörigheter>Lägg till en behörighets-API>:er som min organisation använder. Välj det
Books
program som du registrerade tidigare, välj behörigheterna Books.Read och Books.Write och välj sedan Lägg till behörigheter.Välj Bevilja administratörsmedgivande för ditt klientnamn> för <att bevilja administratörsmedgivande för de behörigheter som du har lagt till.
Gå till Certifikat och hemligheter och välj sedan Ny klienthemlighet.
På sidan Lägg till en klienthemlighet anger du en beskrivning för hemligheten, väljer ett förfallodatum och väljer sedan Lägg till.
Leta efter hemlighetens värde och registrera den för senare användning. Du behöver den för att hämta en åtkomsttoken.
3.5. Uppdatera konfigurationen av Books Service-appen
Leta upp filen books-service/src/main/resources/application.yml för books-service
appen. Uppdatera konfigurationen spring.cloud.azure.active-directory
i avsnittet så att den matchar följande exempel. Se till att ersätta platshållarna med de värden som du skapade tidigare.
spring:
cloud:
azure:
active-directory:
credential:
client-id: <your-application-ID-of-Books>
app-id-uri: <your-application-ID-URI-of-Books>
Använd följande kommando för att återskapa exempelprojektet:
./mvnw clean package
4. Distribuera apparna till Azure Spring Apps
Följande steg visar hur du distribuerar apparna till Azure.
4.1. Distribuera mikrotjänstapparna till Azure Spring Apps
Använd följande steg för att distribuera apparna till Azure Spring Apps med hjälp av Maven-plugin-programmet för Azure Spring Apps:
Gå till exempelprojektkatalogen och använd sedan följande kommando för att konfigurera appen i Azure Spring Apps:
./mvnw com.microsoft.azure:azure-spring-apps-maven-plugin:1.18.0:config
I följande lista beskrivs kommandointeraktionerna:
- Välj underordnade moduler som ska konfigureras (indatanummer avgränsade med kommatecken, t.ex. [1–2,4,6], RETUR för att välja ALLA): Tryck på Retur för att markera alla.
- OAuth2-inloggning: Auktorisera inloggningen till Azure baserat på OAuth2-protokollet.
- Välj prenumeration: Välj prenumerationslistans nummer för den Azure Spring Apps-instans som du skapade, som standard är den första prenumerationen i listan. Om du använder standardnumret trycker du på Retur direkt.
- Välj Azure Spring Apps för distribution: Välj listnumret för den Azure Spring Apps-instans som du skapade. Om du använder standardnumret trycker du på Retur direkt.
- Välj appar som ska exponera offentlig åtkomst: (indatanummer avgränsade med kommatecken, t.ex. [1–2,4,6], RETUR för att välja NONE): Ange 1 för
gateway-service
. - Bekräfta att du vill spara alla ovanstående konfigurationer (Y/n): Ange y. Om du anger n sparas inte konfigurationen i POM-filerna.
Använd följande kommando för att distribuera appen:
./mvnw azure-spring-apps:deploy
I följande lista beskrivs kommandointeraktionen:
- OAuth2-inloggning: Du måste auktorisera inloggningen till Azure baserat på OAuth2-protokollet.
När kommandot har körts kan du se följande loggmeddelanden som anger att distributionen lyckades.
[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. ...
Url:en för utdataprogrammet är basslutpunkten för åtkomst till ToDo RESTful API-programmet.
4.2. Köra SPA-appen lokalt
Uppdatera konfigurationen i SPA
programskriptfilen spa/server.js så att den matchar följande exempel. Se till att ersätta platshållarna med dina egna värden som du skapade i föregående steg.
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"]
};
I SPA-projektkatalogen använder du följande kommando för att köra lokalt:
node server.js
Kommentar
SPA-appen är ett statiskt webbprogram som kan distribueras till valfri webbserver.
5. Verifiera appen
Du kan komma åt Books SPA-appen som kommunicerar med Books RESTful-API:er via gateway-service
appen.
Gå till
http://localhost:3000
i webbläsaren för att få åtkomst till programmet.Ange värden för Författare och Rubrik och välj sedan Lägg till bok. Du ser ett svar som liknar följande exempel:
Book added successfully: {"id":1,"author":"Jeff Black","title":"Spring In Action"}
6. Rensa resurser
Du kan ta bort den Azure-resursgrupp som innehåller alla resurser i resursgruppen. Använd följande steg för att ta bort hela resursgruppen, inklusive den nyligen skapade tjänsten:
Leta reda på resursgruppen på Azure Portal.
Välj Resursgrupper och välj sedan namnet på resursgruppen, till exempel myresourcegroup.
Välj Ta bort på din resursgruppssida. Ange namnet på resursgruppen i textrutan för att bekräfta borttagningen.
Välj Ta bort.
7. Nästa steg
Mer information finns i följande artiklar: