Share via


Esercitazione: Autenticare il client con Spring Cloud Gateway in Azure Spring Apps

Nota

Le prime 50 ore vCPU e 100 GB di memoria sono gratuite ogni mese. Per altre informazioni, vedere Riduzione dei prezzi - Azure Spring Apps fa di più, meno costi! nel blog di App in Azure.

Nota

Azure Spring Apps è il nuovo nome del servizio Azure Spring Cloud. Anche se il servizio ha un nuovo nome, il nome precedente verrà visualizzato in alcune posizioni per un po' mentre si lavora per aggiornare gli asset, ad esempio screenshot, video e diagrammi.

Questo articolo si applica a: ✔️ Consumo standard e dedicato (anteprima)

Questa guida introduttiva illustra come proteggere la comunicazione tra un'applicazione client e un'applicazione di microservizio ospitata in Azure Spring Apps e schermata con un'app Spring Cloud Gateway. L'applicazione client viene verificata come entità di sicurezza per avviare il contatto con il microservizio distribuito in Azure Spring Apps, usando l'app compilata con Spring Cloud Gateway. Questo metodo usa l'inoltro token di Spring Cloud Gateway e le funzionalità del server di risorse di Spring Security per i processi di autenticazione e autorizzazione, realizzati tramite l'esecuzione del flusso di credenziali client OAuth 2.0.

L'elenco seguente mostra la composizione del progetto di esempio:

  • Spa libri: questa applicazione a pagina singola ospitata in locale interagisce con il microservizio Books per aggiungere o cercare libri.
  • Microservizio libri:
    • Un'app Spring Cloud Gateway ospitata in Azure Spring Apps. Questa app funziona come gateway per le API RESTful della documentazione.
    • Un'app per le API RESTful Spring Boot ospitata in Azure Spring Apps. Questa app archivia le informazioni del libro in un database H2. Il servizio Libri espone due endpoint REST per scrivere e leggere libri.

1. Prerequisiti

2. Preparare il progetto Spring

Usare la procedura seguente per clonare ed eseguire l'app in locale:

  1. Usare il comando seguente per clonare il progetto di esempio da GitHub:

    git clone https://github.com/Azure-Samples/azure-spring-apps-sso-client-credential.git -b consumption-plan
    
  2. Usare il comando seguente per compilare i servizi back-end books:

    cd azure-spring-apps-sso-client-credential
    ./mvnw clean package
    
  3. Immettere la directory del progetto SPA e usare il comando seguente per installare le dipendenze:

    npm install @azure/msal-node
    

3. Preparare l'ambiente cloud

Le risorse principali necessarie per eseguire questo esempio sono un'istanza di Azure Spring Apps e un'istanza di Database di Azure per PostgreSQL. Questa sezione illustra i passaggi per creare queste risorse.

3.1. Accedere al portale di Azure

Aprire il Web browser e passare al portale di Azure. Immettere le credenziali per accedere al portale di Azure. La visualizzazione predefinita è il dashboard del servizio.

3.2. Creare un'istanza di Azure Spring Apps

Per creare un'istanza del servizio, seguire questa procedura:

  1. Selezionare Crea una risorsa nell'angolo del portale di Azure.

  2. Selezionare Calcolo di>Azure Spring Apps.

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

  3. Compilare il modulo Informazioni di base con le informazioni seguenti:

    Impostazione Valore suggerito Descrizione
    Abbonamento nome della sottoscrizione Sottoscrizione di Azure da usare per il server. Se si hanno più sottoscrizioni, scegliere quella in cui si desidera che venga fatturata la risorsa.
    Gruppo di risorse myresourcegroup Nuovo nome di gruppo di risorse o uno esistente nella sottoscrizione.
    Nome myasa Nome univoco che identifica il servizio Azure Spring Apps. Il nome deve essere composto da 4-32 caratteri e può contenere solo lettere in minuscolo, numeri e trattini. Il primo carattere del nome del servizio deve essere una lettera e l'ultimo deve essere una lettera o un numero.
    Piano Consumo standard e dedicato (anteprima) Il piano tariffario determina le risorse e i costi associati all'istanza.
    Area Area più vicina ai propri utenti Località più vicina agli utenti.
    Ambiente app contenitore myacaenv Selezionare l'istanza dell'ambiente app contenitore per condividere la stessa rete virtuale con altri servizi e risorse.

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

    Usare la tabella seguente come guida per creare l'ambiente app contenitore:

    Impostazione Valore suggerito Descrizione
    Nome ambiente myacaenv Nome univoco che identifica il servizio Azure Container Apps Environment.
    Piano Consumo Il piano tariffario determina le risorse e i costi associati all'istanza.
    Con ridondanza della zona Disabilitato Se creare il servizio Ambiente app contenitore in una zona di disponibilità di Azure.

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

    Importante

    Il profilo del carico di lavoro Consumo ha un modello di fatturazione con pagamento in base al consumo, senza costi di partenza. Viene addebitato il profilo del carico di lavoro dedicato in base alle risorse di cui è stato effettuato il provisioning. Per altre informazioni, vedere Profili del carico di lavoro in Ambienti di struttura del piano dedicato e consumo in App Azure Container (anteprima) e Prezzi di Azure Spring Apps.

  4. Selezionare Rivedi e crea per esaminare le selezioni. Selezionare Crea per effettuare il provisioning dell'istanza di Azure Spring Apps.

  5. Sulla barra degli strumenti selezionare l'icona Notifiche a forma di campana per monitorare il processo di distribuzione. Al termine della distribuzione, è possibile selezionare Aggiungi al dashboard, che crea un riquadro per questo servizio nel dashboard portale di Azure come collegamento alla pagina Panoramica del servizio. Selezionare Vai alla risorsa per aprire la pagina Panoramica del servizio.

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

  6. Usare il comando seguente per abilitare il server Eureka. Assicurarsi di sostituire i segnaposto con i propri valori creati nel passaggio precedente.

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

3.3. Registrare l'applicazione Libri

Questa sezione illustra i passaggi per registrare un'applicazione per aggiungere ruoli dell'app in Microsoft Entra ID, che viene usato per proteggere le API RESTful in Azure Spring Apps.

  1. Passare alla home page di portale di Azure.

  2. Se si ha accesso a più tenant, usare il filtro Directory + sottoscrizione ( ) per selezionare il tenant in cui si vuole registrare un'applicazione.

  3. Cercare e selezionare Microsoft Entra ID.

  4. In Gestisci selezionare Registrazioni app>Nuova registrazione.

  5. Immettere un nome per l'applicazione nel campo Nome , ad esempio Libri. Tale nome, che potrebbe essere visualizzato dagli utenti dell'app, può essere modificato in un secondo momento.

  6. Per Tipi di account supportati selezionare Account solo in questa directory dell'organizzazione.

  7. Selezionare Registra per creare l'applicazione.

  8. Nella pagina Panoramica dell'app cercare il valore del campo ID applicazione (client) e prenderne nota per un uso futuro. È necessario configurare il file di configurazione YAML per questo progetto.

  9. In Gestisci selezionare Esporre un'API, trovare l'URI ID applicazione all'inizio della pagina e quindi selezionare Aggiungi.

  10. Nella pagina Modifica URI ID applicazione accettare l'URI ID applicazione proposto (api://{client ID}) o usare un nome significativo anziché l'ID client, ad esempio api://bookse quindi selezionare Salva.

  11. In Gestisci selezionare Ruoli>app Crea ruolo app e quindi immettere le informazioni seguenti:

    • In Nome visualizzato immettere Scrivi.
    • In Tipi di membri consentiti selezionare Applicazioni.
    • In Valore immettere Books.Write.
    • Per Descrizione immettere Aggiunta di libri.
  12. Ripetere il passaggio precedente per aggiungere un altro ruolo dell'app: Books.Read.

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

3.4. Registrare l'applicazione a pagina singola

L'app per le API RESTful books funge da server di risorse, protetto da Microsoft Entra ID. Prima di acquisire un token di accesso, è necessario registrare un'altra applicazione in Microsoft Entra ID e concedere le autorizzazioni all'applicazione client, denominata SPA.

  1. Tornare al tenant in Microsoft Entra ID.

  2. In Gestisci selezionare Registrazioni app>Nuova registrazione.

  3. Immettere un nome per l'applicazione nel campo Nome , ad esempio SPA.

  4. Per Tipi di account supportati, usare solo gli account predefiniti in questa directory organizzativa.

  5. Selezionare Registra per creare l'applicazione.

  6. Nella pagina Panoramica dell'app cercare il valore del campo ID applicazione (client) e prenderne nota per un uso futuro. È necessario per acquisire il token di accesso.

  7. Selezionare Autorizzazioni API>Aggiungi un'autorizzazione>API usate dall'organizzazione. Selezionare l'applicazione Books registrata in precedenza, selezionare le autorizzazioni Books.Read e Books.Write e quindi selezionare Aggiungi autorizzazioni.

  8. Selezionare Concedi consenso amministratore per <your-tenant-name> per concedere il consenso amministratore per le autorizzazioni aggiunte.

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

  9. Passare a Certificati e segreti e quindi selezionare Nuovo segreto client.

  10. Nella pagina Aggiungi un segreto client immettere una descrizione per il segreto, selezionare una data di scadenza e quindi selezionare Aggiungi.

  11. Cercare il valore del segreto e quindi registrarlo per usarlo in un secondo momento. È necessario per acquisire un token di accesso.

3.5. Aggiornare la configurazione dell'app del servizio documentazione

Individuare il file books-service/src/main/resources/application.yml per l'app books-service . Aggiornare la configurazione nella spring.cloud.azure.active-directory sezione in modo che corrisponda all'esempio seguente. Assicurarsi di sostituire i segnaposto con i valori creati in precedenza.

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

Usare il comando seguente per ricompilare il progetto di esempio:

./mvnw clean package

4. Distribuire le app in Azure Spring Apps

I passaggi seguenti illustrano come distribuire le app in Azure.

4.1. Distribuire le app di microservizi in Azure Spring Apps

Usare la procedura seguente per distribuire le app in Azure Spring Apps usando il plug-in Maven per Azure Spring Apps:

  1. Passare alla directory del progetto di esempio e quindi usare il comando seguente per configurare l'app in Azure Spring Apps:

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

    L'elenco seguente descrive le interazioni con i comandi:

    • Selezionare moduli figlio da configurare (numeri di input separati da virgola, ad esempio[1-2,4,6], INVIO per selezionare TUTTO): premere INVIO per selezionare tutto.
    • Accesso OAuth2: autorizzare l'accesso ad Azure in base al protocollo OAuth2.
    • Selezionare la sottoscrizione: selezionare il numero di elenco di sottoscrizioni dell'istanza di Azure Spring Apps creata, che per impostazione predefinita corrisponde alla prima sottoscrizione nell'elenco. Se si usa il numero predefinito, premere INVIO direttamente.
    • Selezionare App Azure Spring per la distribuzione: selezionare il numero di elenco dell'istanza di Azure Spring Apps creata. Se si usa il numero predefinito, premere INVIO direttamente.
    • Selezionare le app per esporre l'accesso pubblico: (numeri di input separati da virgola, ad esempio: [1-2,4,6], INVIO per selezionare NONE): immettere 1 per gateway-service.
    • Confermare di salvare tutte le configurazioni precedenti (Y/n): immettere y. Se si immette n, la configurazione non viene salvata nei file POM.
  2. Usare il comando seguente per distribuire l'app:

    ./mvnw azure-spring-apps:deploy
    

    L'elenco seguente descrive l'interazione con il comando:

    • Accesso OAuth2: è necessario autorizzare l'accesso ad Azure in base al protocollo OAuth2.

    Dopo l'esecuzione del comando, è possibile visualizzare i messaggi di log seguenti, che indicano che la distribuzione ha avuto esito positivo.

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

    L'URL dell'applicazione di output è l'endpoint di base per accedere all'applicazione API TODo RESTful.

4.2. Eseguire l'app SPA in locale

Aggiornare la configurazione nel file spa/server.js dello SPA script dell'applicazione in modo che corrisponda all'esempio seguente. Assicurarsi di sostituire i segnaposto con i propri valori creati nel passaggio precedente.

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

Nella directory del progetto SPA usare il comando seguente per eseguire localmente:

node server.js

Nota

L'app SPA è un'applicazione Web statica, che può essere distribuita in qualsiasi server Web.

5. Convalidare l'app

È possibile accedere all'app Spa books che comunica con le API RESTful della documentazione tramite l'app gateway-service .

  1. Passare a http://localhost:3000 nel browser per accedere all'applicazione.

  2. Immettere i valori per Autore e Titolo e quindi selezionare Aggiungi libro. Viene visualizzata una risposta simile all'esempio seguente:

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

6. Pulire le risorse

È possibile eliminare il gruppo di risorse di Azure, che include tutte le risorse del gruppo. Usare la procedura seguente per eliminare l'intero gruppo di risorse, incluso il servizio appena creato:

  1. Individuare il gruppo di risorse nel portale di Azure.

  2. Selezionare Gruppi di risorse e quindi selezionare il nome del gruppo di risorse, ad esempio myresourcegroup.

  3. Nella pagina del gruppo di risorse selezionare Elimina. Immettere il nome del gruppo di risorse nella casella di testo per confermare l'eliminazione.

  4. Selezionare Elimina.

7. Passaggi successivi

Per altre informazioni, vedere gli articoli seguenti: