Kurz: Ověřování klienta pomocí brány Spring Cloud v Azure Spring Apps

Poznámka:

Prvních 50 vCPU hodin a 100 GB paměti je každý měsíc zdarma. Další informace najdete v tématu Snížení cen – Azure Spring Apps dělá více, náklady na méně! na blogu o aplikacích v Azure.

Poznámka:

Azure Spring Apps je nový název služby Azure Spring Cloud. Přestože má služba nový název, na některých místech uvidíte starý název, protože pracujeme na aktualizaci prostředků, jako jsou snímky obrazovky, videa a diagramy.

Tento článek se vztahuje na: ✔️ Standardní spotřeba a vyhrazená (Preview)

V tomto rychlém startu se dozvíte, jak zabezpečit komunikaci mezi klientskou aplikací a aplikací mikroslužeb hostovanou v Azure Spring Apps a chráněnou aplikací Spring Cloud Gateway. Klientská aplikace je ověřená jako objekt zabezpečení, který iniciuje kontakt s mikroslužbou nasazenou v Azure Spring Apps pomocí aplikace vytvořené pomocí brány Spring Cloud. Tato metoda využívá funkce Token Relay služby Spring Cloud Gateway a Spring Security Resource Server pro procesy ověřování a autorizace, které byly realizovány prostřednictvím spuštění toku přihlašovacích údajů klienta OAuth 2.0.

Následující seznam ukazuje složení ukázkového projektu:

  • Books SPA: Tato jednostránkové aplikace (SPA), hostovaná místně, komunikuje s mikroslužbou Books pro přidávání nebo vyhledávání knih.
  • Mikroslužba knihy:
    • Aplikace Spring Cloud Gateway hostovaná v Azure Spring Apps Tato aplikace funguje jako brána pro rozhraní RESTful API Books.
    • Aplikace ROZHRANÍ RESTful API spring Boot hostovaná v Azure Spring Apps Tato aplikace ukládá informace o knize do databáze H2. Služba Books zveřejňuje dva koncové body REST pro zápis a čtení knih.

1. Požadavky

2. Příprava projektu Spring

Pomocí následujících kroků naklonujte a spusťte aplikaci místně:

  1. Pomocí následujícího příkazu naklonujte ukázkový projekt z GitHubu:

    git clone https://github.com/Azure-Samples/azure-spring-apps-sso-client-credential.git -b consumption-plan
    
  2. Pomocí následujícího příkazu sestavte back-endové služby Books:

    cd azure-spring-apps-sso-client-credential
    ./mvnw clean package
    
  3. Zadejte adresář projektu SPA a pomocí následujícího příkazu nainstalujte závislosti:

    npm install @azure/msal-node
    

3. Příprava cloudového prostředí

Hlavní prostředky potřebné ke spuštění této ukázky jsou instance Azure Spring Apps a instance Azure Database for PostgreSQL. Tato část obsahuje postup vytvoření těchto prostředků.

3.1. Přihlaste se k portálu Azure Portal.

Otevřete webový prohlížeč a přejděte na web Azure Portal. Zadejte svoje přihlašovací údaje pro přihlášení k webu Azure Portal. Výchozím zobrazením je váš řídicí panel služby.

3.2. Vytvoření instance Azure Spring Apps

K vytvoření instance služby použijte následující postup:

  1. V rohu webu Azure Portal vyberte Vytvořit prostředek .

  2. Vyberte Compute>Azure Spring Apps.

    Screenshot of the Azure portal that shows the Create a resource page with Azure Spring Apps highlighted.

  3. Vyplňte formulář Základy s následujícími informacemi:

    Nastavení Navrhovaná hodnota Popis
    Předplatné Název vašeho předplatného Předplatné Azure, které chcete použít pro váš server. Pokud máte více předplatných, zvolte předplatné, ve kterém chcete prostředek fakturovat.
    Skupina prostředků myresourcegroup Název nové skupiny prostředků nebo některé ze stávajících ve vašem předplatném.
    Název myasa Jedinečný název, který identifikuje vaši službu Azure Spring Apps. Název musí mít délku 4 až 32 znaků a může obsahovat jenom malá písmena, číslice a pomlčky. První znak názvu služby musí být písmeno a poslední znak musí být písmeno nebo číslo.
    Plánování Standardní spotřeba a vyhrazená verze (Preview) Cenový plán určuje prostředky a náklady spojené s vaší instancí.
    Oblast Oblast nejbližší vašim uživatelům Umístění co nejblíže vašim uživatelům.
    Prostředí Container Apps myacaenv Vyberte instanci prostředí Container Apps, která se má sdílet se stejnou virtuální sítí s dalšími službami a prostředky.

    Screenshot of the Azure portal that shows the Create Azure Spring Apps consumption plan page.

    Jako vodítko pro vytvoření prostředí Container Apps použijte následující tabulku:

    Nastavení Navrhovaná hodnota Popis
    Název prostředí myacaenv Jedinečný název, který identifikuje vaši službu Azure Container Apps Environment.
    Plánování Využití Cenový plán určuje prostředky a náklady spojené s vaší instancí.
    Zónově redundantní Zakázáno Určuje, jestli chcete vytvořit službu Container Apps Environment v zóně dostupnosti Azure.

    Screenshot of the Azure portal that shows the Create Azure Container Apps page.

    Důležité

    Profil úlohy Consumption má model fakturace s průběžnými platbami bez počátečních nákladů. Na základě zřízených prostředků se vám účtuje vyhrazený profil úloh. Další informace najdete v tématech Profily úloh ve struktuře plánů Consumption a Dedicated v cenách Azure Container Apps (Preview) a Azure Spring Apps.

  4. Výběrem možnosti Zkontrolovat a Vytvořit zkontrolujte vybrané možnosti. Výběrem možnosti Vytvořit zřídíte instanci Azure Spring Apps.

  5. Pokud chcete monitorovat proces nasazení, na panelu nástrojů vyberte ikonu Oznámení (zvonek). Po dokončení nasazení můžete vybrat možnost Připnout na řídicí panel, který vytvoří dlaždici pro tuto službu na řídicím panelu webu Azure Portal jako zástupce na stránce Přehled služby. Výběrem možnosti Přejít k prostředku otevřete stránku Přehled služby.

    Screenshot of the Azure portal that shows the Overview page with the Notifications pane open.

  6. Pomocí následujícího příkazu povolte server Eureka. Zástupné symboly nezapomeňte nahradit vlastními hodnotami, které jste vytvořili v předchozím kroku.

    az spring eureka-server enable \
        --resource-group <resource-group-name> \
        --name <Azure-Spring-Apps-instance-name>
    

3.3. Registrace aplikace Books

Tato část obsahuje postup registrace aplikace pro přidání aplikačních rolí do MICROSOFT Entra ID, který se používá k ochraně rozhraní RESTful API v Azure Spring Apps.

  1. Přejděte na domovskou stránku webu Azure Portal.

  2. Pokud máte přístup k více tenantům, pomocí filtru Adresář a předplatné ( ) vyberte tenanta, ve kterém chcete aplikaci zaregistrovat.

  3. Vyhledejte a vyberte Microsoft Entra ID.

  4. V části Spravovat vyberte Registrace aplikací> Nová registrace.

  5. Do pole Název zadejte název aplikace, například Knihy. Uživatelé vaší aplikace můžou vidět tento název a později ho můžete změnit.

  6. U podporovaných typů účtů vyberte Pouze účty v tomto organizačním adresáři.

  7. Výběrem možnosti Registrovat aplikaci vytvořte.

  8. Na stránce Přehled aplikace vyhledejte hodnotu ID aplikace (klienta) a potom ji poznamenejte pro pozdější použití. Potřebujete ho ke konfiguraci konfiguračního souboru YAML pro tento projekt.

  9. V části Spravovat vyberte Zveřejnit rozhraní API, na začátku stránky vyhledejte identifikátor URI ID aplikace a pak vyberte Přidat.

  10. Na stránce Upravit identifikátor URI ID aplikace přijměte navrhovaný identifikátor URI ID aplikace (api://{client ID}) nebo použijte smysluplný název místo ID klienta, například api://booksa pak vyberte Uložit.

  11. V části Spravovat vyberte Role>aplikace Vytvořit roli aplikace a zadejte následující informace:

    • Jako zobrazovaný název zadejte Write.
    • V seznamu Povolené typy členů vyberte Aplikace.
    • Jako hodnotu zadejte Books.Write.
    • Jako popis zadejte Přidání knih.
  12. Opakováním předchozího kroku přidejte další roli aplikace: Books.Read.

    Screenshot of the Books app registration page that shows the App roles.

3.4. Registrace aplikace SPA

Aplikace Books RESTful API funguje jako server prostředků, který je chráněný id Microsoft Entra. Před získáním přístupového tokenu budete muset zaregistrovat jinou aplikaci v MICROSOFT Entra ID a udělit oprávnění klientské aplikaci, která má název SPA.

  1. Vraťte se ke svému tenantovi v Microsoft Entra ID.

  2. V části Spravovat vyberte Registrace aplikací> Nová registrace.

  3. Do pole Název zadejte název aplikace, například SPA.

  4. U podporovaných typů účtů použijte pouze výchozí účty v tomto organizačním adresáři.

  5. Výběrem možnosti Registrovat aplikaci vytvořte.

  6. Na stránce Přehled aplikace vyhledejte hodnotu ID aplikace (klienta) a potom ji poznamenejte pro pozdější použití. Potřebujete ho k získání přístupového tokenu.

  7. Vyberte oprávnění>rozhraní API Pro přidání rozhraní API oprávnění>, která moje organizace používá. Books Vyberte aplikaci, kterou jste zaregistrovali dříve, vyberte oprávnění Books.Read and Books.Write a pak vyberte Přidat oprávnění.

  8. Pokud chcete udělit souhlas správce s oprávněními, která jste přidali, vyberte Udělit souhlas správce pro <vaše jméno> tenanta.

    Screenshot of the SPA API permissions page that shows the API permissions of a web application.

  9. Přejděte na Certifikáty a tajné kódy a pak vyberte Nový tajný klíč klienta.

  10. Na stránce Přidat tajný klíč klienta zadejte popis tajného kódu, vyberte datum vypršení platnosti a pak vyberte Přidat.

  11. Vyhledejte hodnotu tajného kódu a potom ho poznamenejte pro pozdější použití. Potřebujete ho k získání přístupového tokenu.

3.5. Aktualizace konfigurace aplikace Books Service

Vyhledejte soubor books-service/src/main/resources/application.yml aplikace books-service . Aktualizujte konfiguraci v spring.cloud.azure.active-directory části tak, aby odpovídala následujícímu příkladu. Zástupné symboly nezapomeňte nahradit hodnotami, které jste vytvořili dříve.

spring:
  cloud:
    azure:
      active-directory:
        credential:
          client-id: <your-application-ID-of-Books>
        app-id-uri: <your-application-ID-URI-of-Books>

Pomocí následujícího příkazu znovu sestavte ukázkový projekt:

./mvnw clean package

4. Nasazení aplikací do Azure Spring Apps

Následující kroky ukazují, jak nasadit aplikace do Azure.

4.1. Nasazení aplikací mikroslužeb do Azure Spring Apps

Pomocí následujícího postupu nasaďte aplikace do Azure Spring Apps pomocí modulu plug-in Maven pro Azure Spring Apps:

  1. Přejděte do adresáře ukázkového projektu a pak pomocí následujícího příkazu nakonfigurujte aplikaci v Azure Spring Apps:

    ./mvnw com.microsoft.azure:azure-spring-apps-maven-plugin:1.18.0:config
    

    Následující seznam popisuje interakce příkazů:

    • Vyberte podřízené moduly, které chcete nakonfigurovat (vstupní čísla oddělená čárkou, např: [1-2,4,6], ENTER vyberte VŠE): Stisknutím klávesy Enter vyberte vše.
    • Přihlášení OAuth2: Autorizuje přihlášení do Azure na základě protokolu OAuth2.
    • Vyberte předplatné: Vyberte číslo seznamu předplatných instance Azure Spring Apps, kterou jste vytvořili. Výchozí hodnota je první předplatné v seznamu. Pokud použijete výchozí číslo, stiskněte klávesu Enter přímo.
    • Vyberte Azure Spring Apps pro nasazení: Vyberte číslo seznamu instance Azure Spring Apps, kterou jste vytvořili. Pokud použijete výchozí číslo, stiskněte klávesu Enter přímo.
    • Vyberte aplikace pro zveřejnění veřejného přístupu: (vstupní čísla oddělená čárkou, např: [1-2,4,6], ENTER a vyberte NONE): Zadejte 1 pro gateway-service.
    • Potvrďte uložení všech výše uvedených konfigurací (Y/n):Zadejte y. Pokud zadáte n, konfigurace se neuloží do souborů POM.
  2. K nasazení aplikace použijte následující příkaz:

    ./mvnw azure-spring-apps:deploy
    

    Následující seznam popisuje interakci s příkazy:

    • Přihlášení OAuth2: Musíte autorizovat přihlášení k Azure na základě protokolu OAuth2.

    Po provedení příkazu se zobrazí následující zprávy protokolu, které značí, že nasazení proběhlo úspěšně.

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

    Výstupní adresa URL aplikace je základní koncový bod pro přístup k aplikaci rozhraní API ToDo RESTful.

4.2. Místní spuštění aplikace SPA

Aktualizujte konfiguraci v SPA souboru skriptu aplikace spa/server.js tak, aby odpovídala následujícímu příkladu. Zástupné symboly nezapomeňte nahradit vlastními hodnotami, které jste vytvořili v předchozím kroku.

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"]
};

V adresáři projektu SPA spusťte místně následující příkaz:

node server.js

Poznámka:

Aplikace SPA je statická webová aplikace, kterou je možné nasadit na libovolný webový server.

5. Ověření aplikace

Přístup k aplikaci Books SPA, která komunikuje s rozhraními BOOKS RESTful API prostřednictvím gateway-service aplikace.

  1. Přejděte v http://localhost:3000 prohlížeči a získejte přístup k aplikaci.

  2. Zadejte hodnoty pro Autor a Název a pak vyberte Přidat knihu. Zobrazí se odpověď podobná následujícímu příkladu:

    Book added successfully: {"id":1,"author":"Jeff Black","title":"Spring In Action"}
    

6. Vyčištění prostředků

Můžete odstranit skupinu prostředků Azure, což zahrnuje odstranění všech prostředků v této skupině prostředků. Pomocí následujících kroků odstraňte celou skupinu prostředků, včetně nově vytvořené služby:

  1. Vyhledejte skupinu prostředků na webu Azure Portal.

  2. Vyberte skupiny prostředků a pak vyberte název vaší skupiny prostředků, například myresourcegroup.

  3. Na stránce vaší skupiny prostředků vyberte Odstranit. Do textového pole zadejte název vaší skupiny prostředků, abyste potvrdili odstranění.

  4. Vyberte Odstranit.

7. Další kroky

Další informace najdete v následujících článcích: