Avvio rapido: Distribuire un'applicazione API RESTful 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 descrive come distribuire un'applicazione API RESTful protetta da Microsoft Entra ID in Azure Spring Apps. Il progetto di esempio è una versione semplificata basata sull'applicazione Web Simple Todo , che fornisce solo il servizio back-end e usa l'ID Microsoft Entra per proteggere le API RESTful.

Queste API RESTful sono protette applicando il controllo degli accessi in base al ruolo. Gli utenti anonimi non possono accedere ai dati e non sono autorizzati a controllare l'accesso per utenti diversi. Gli utenti anonimi hanno solo le tre autorizzazioni seguenti:

  • Lettura: con questa autorizzazione, un utente può leggere i dati ToDo.
  • Scrittura: con questa autorizzazione, un utente può aggiungere o aggiornare i dati ToDo.
  • Elimina: con questa autorizzazione, un utente può eliminare i dati ToDo.

Al termine della distribuzione, è possibile visualizzare e testare le API tramite l'interfaccia utente di Swagger.

Screenshot of the Swagger UI that shows the API document.

Il diagramma seguente illustra l'architettura del sistema:

Diagram that shows the architecture of a Spring web application.

Questo articolo descrive le opzioni seguenti per creare risorse e distribuirle in Azure Spring Apps:

  • L'opzione plug-in portale di Azure + Maven offre un modo più convenzionale per creare risorse e distribuire le applicazioni in modo dettagliato. Questa opzione è adatta agli sviluppatori Spring che usano i servizi cloud di Azure per la prima volta.
  • L'opzione dell'interfaccia della riga di comando per sviluppatori di Azure è un modo più efficiente per creare automaticamente le risorse e distribuire le applicazioni tramite semplici comandi. L'interfaccia della riga di comando per sviluppatori di Azure usa un modello per effettuare il provisioning delle risorse di Azure necessarie e per distribuire il codice dell'applicazione. Questa opzione è adatta agli sviluppatori Spring che hanno familiarità con i servizi cloud di Azure.

Questo articolo descrive le opzioni seguenti per creare risorse e distribuirle in Azure Spring Apps:

  • L'opzione plug-in portale di Azure + Maven offre un modo più convenzionale per creare risorse e distribuire le applicazioni in modo dettagliato. Questa opzione è adatta agli sviluppatori Spring che usano i servizi cloud di Azure per la prima volta.
  • L'opzione dell'interfaccia della riga di comando di Azure usa un potente strumento da riga di comando per gestire le risorse di Azure. Questa opzione è adatta agli sviluppatori Spring che hanno familiarità con i servizi cloud di Azure.

1. Prerequisiti

2. Preparare il progetto Spring

Per distribuire l'app per le API RESTful, il primo passaggio consiste nel preparare il progetto Spring per l'esecuzione in locale.

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/ASA-Samples-Restful-Application.git
    
  2. Se si vuole eseguire l'app in locale, completare i passaggi nelle sezioni Esporre LE API RESTful e Aggiornare prima di tutto la configurazione dell'applicazione e quindi usare il comando seguente per eseguire l'applicazione di esempio con Maven:

    cd ASA-Samples-Restful-Application
    ./mvnw spring-boot:run
    

3. Preparare l'ambiente cloud

Le risorse principali necessarie per eseguire questa app di esempio sono un'istanza di Azure Spring Apps e un'istanza di Database di Azure per PostgreSQL. Le sezioni seguenti descrivono come creare queste risorse.

3.1. Accedere al portale di Azure

Passare al portale di Azure e immettere le credenziali per accedere al portale. La visualizzazione predefinita è il dashboard del servizio.

3.2. Creare un'istanza di Azure Spring Apps

Usare la procedura seguente per creare un'istanza del servizio Azure Spring Apps:

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

  2. Selezionare Calcolo di>Azure Spring Apps.

  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 Funzionalità per le aziende Piano tariffario che determina la risorsa e il costo associati all'istanza.
    Area Area più vicina agli utenti. Località più vicina agli utenti.
    Ridondanza della zona Non selezionato Opzione per creare il servizio Azure Spring Apps in una zona di disponibilità di Azure. Questa funzionalità non è attualmente supportata in tutte le aree.
    Piano IP software Pagamento in base al consumo Piano tariffario che consente di pagare man mano che si usa Azure Spring Apps.
    Terms Selected Casella di controllo del contratto associata all'offerta marketplace. È necessario selezionare questa casella di controllo.
    Distribuire un progetto di esempio Non selezionato Opzione per usare l'applicazione di esempio predefinita.
  4. Selezionare Rivedi e crea per esaminare le selezioni. Selezionare quindi 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.

    Screenshot of the Azure portal that shows the Notifications pane for Azure Spring Apps creation.

  6. Selezionare Vai alla risorsa per passare alla pagina Panoramica di Azure Spring Apps.

3.3. Preparare l'istanza di PostgreSQL

Usare la procedura seguente per creare un server Database di Azure per PostgreSQL:

  1. Passare al portale di Azure e selezionare Crea una risorsa.

  2. Selezionare Database>Database di Azure per PostgreSQL.

  3. Selezionare l'opzione di distribuzione Server flessibile.

    Screenshot of the Azure portal that shows the Select Azure Database for PostgreSQL deployment option page.

  4. Compilare la scheda Informazioni di base con le informazioni seguenti:

    • Nome server: my-demo-pgsql
    • Area: Stati Uniti orientali
    • Versione di PostgreSQL: 14
    • Tipo di carico di lavoro: Sviluppo
    • Abilitare la disponibilità elevata: deselezionata
    • Metodo di autenticazione: solo autenticazione PostgreSQL
    • Amministrazione nome utente: myadmin
    • Password e Conferma password: immettere una password.
  5. Usare le informazioni seguenti per configurare la scheda Rete :

    • metodo Connessione ivity: accesso pubblico (indirizzi IP consentiti)
    • Consenti l'accesso pubblico da qualsiasi servizio di Azure in Azure a questo server: selezionato
  6. Selezionare Rivedi e crea per esaminare le selezioni e selezionare Crea per effettuare il provisioning del server. L'operazione potrebbe richiedere alcuni minuti.

  7. Passare al server PostgreSQL nel portale di Azure. Nella pagina Panoramica cercare il valore Nome server e quindi registrarlo per usarlo in un secondo momento. È necessario configurare le variabili di ambiente per l'app in Azure Spring Apps.

  8. Selezionare Database dal menu di spostamento per creare un database, ad esempio todo.

    Screenshot of the Azure portal that shows the Databases page with the Create Database pane open.

3.4. Connessione'istanza dell'app all'istanza di PostgreSQL

Usare la procedura seguente per connettere le istanze del servizio:

  1. Passare all'istanza di Azure Spring Apps nel portale di Azure.

  2. Dal menu di spostamento aprire App e quindi selezionare Crea app.

  3. Nella pagina Crea app compilare il nome dell'app simple-todo-api e quindi selezionare Artefatti Java come tipo di distribuzione.

  4. Selezionare Crea per completare la creazione dell'app e quindi selezionare l'app per visualizzare i dettagli.

  5. Passare all'app creata nel portale di Azure. Nella pagina Panoramica selezionare Assegna endpoint per esporre l'endpoint pubblico per l'app. Salvare l'URL per l'accesso all'app dopo la distribuzione.

  6. Selezionare Service Connessione or nel riquadro di spostamento e quindi selezionare Crea per creare una nuova connessione al servizio.

    Screenshot of the Azure portal that shows the enterprise plan Service Connector page with the Create button highlighted.

  7. Compilare la scheda Informazioni di base con le informazioni seguenti:

    • Tipo di servizio: server flessibile db per PostgreSQL
    • nome Connessione ion: viene popolato un nome generato automaticamente, che può essere modificato anche.
    • Sottoscrizione: selezionare la propria sottoscrizione.
    • Server flessibile PostgreSQL: my-demo-pgsql
    • Database PostgreSQL: selezionare il database creato.
    • Tipo di client: SpringBoot

    Screenshot of the Azure portal that shows the Basics tab of the Create connection pane for connecting to Service Bus.

  8. Configurare la scheda Avanti: Autenticazione con le informazioni seguenti:

    • Selezionare il tipo di autenticazione che si vuole usare tra il servizio di calcolo e il servizio di destinazione. Selezionare Connessione stringa.
    • Continuare con...: Selezionare Credenziali database
    • Nome utente: myadmin
    • Password: immettere la password.

    Screenshot of the Azure portal that shows the Authentication tab of the Create connection pane with the Connection string option highlighted.

  9. Al termine, selezionare Avanti: Rete. Usare l'opzione predefinita Configura regole del firewall per abilitare l'accesso al servizio di destinazione.

  10. Selezionare Avanti: Rivedi e crea per esaminare le selezioni, quindi selezionare Crea per creare la connessione.

3.5. Esporre le API RESTful

Seguire questa procedura per esporre le API RESTful in Microsoft Entra ID:

  1. Accedere al 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 Todo. 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 in qualsiasi directory organizzativa (Qualsiasi directory Microsoft Entra - Multi-tenant) e account Microsoft personali.

  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://simple-todoe quindi selezionare Salva.

  11. In Gestisci selezionare Esporre un'API>Aggiungi un ambito e quindi immettere le informazioni seguenti:

    • In Nome ambito immettere ToDo.Read.
    • Per Chi può fornire il consenso, selezionare solo Amministrazione.
    • Per Amministrazione nome visualizzato del consenso, immettere Leggi i dati ToDo.
    • Per Amministrazione descrizione del consenso, immettere Consenti agli utenti autenticati di leggere i dati ToDo.
    • Per Stato mantenere abilitato.
    • Seleziona Aggiungi ambito.
  12. Ripetere i passaggi precedenti per aggiungere gli altri due ambiti: ToDo.Write e ToDo.Delete.

    Screenshot of the Azure portal that shows the Expose an API page of a RESTful API application.

3.6. Aggiornare la configurazione dell'applicazione

Seguire questa procedura per aggiornare il file YAML per usare le informazioni dell'applicazione registrata di Microsoft Entra per stabilire una relazione con l'applicazione API RESTful:

  1. Individuare il file src/main/resources/application.yml per l'app simple-todo-api . 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:
            profile:
              tenant-id: <tenant>
            credential:
              client-id: <your-application-ID-of-ToDo>
            app-id-uri: <your-application-ID-URI-of-ToDo>
    

    Nota

    Nei token v1.0, la configurazione richiede l'ID client dell'API, mentre nei token v2.0 è possibile usare l'ID client o l'URI ID applicazione nella richiesta. È possibile configurare entrambi per completare correttamente la convalida del gruppo di destinatari.

    I valori consentiti per tenant-id sono: common, organizations, consumerso l'ID tenant. Per altre informazioni su questi valori, vedere la sezione Usato l'endpoint errato (account personali e dell'organizzazione) di Errore AADSTS50020 - L'account utente del provider di identità non esiste nel tenant. Per informazioni sulla conversione dell'app a tenant singolo, vedere Convertire l'app a tenant singolo in multi-tenant in Microsoft Entra ID.

  2. Usare il comando seguente per ricompilare il progetto di esempio:

    ./mvnw clean package
    

4. Distribuire l'app in Azure Spring Apps

È ora possibile distribuire l'app in App Spring di Azure.

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

  1. Passare alla directory completa e quindi eseguire il comando seguente per configurare l'app in Azure Spring Apps:

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

    L'elenco seguente descrive le interazioni con i comandi:

    • Accesso OAuth2: è necessario 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.
    • Usare le app Spring di Azure esistenti in Azure: premere y per usare l'istanza di Azure Spring Apps esistente.
    • Selezionare App Spring di Azure per la distribuzione: selezionare il numero dell'istanza di Azure Spring Apps creata. Se si usa il numero predefinito, premere INVIO direttamente.
    • Usare l'app esistente in Azure Spring Apps <nome-istanza>: premere y per usare l'app creata.
    • Confermare di salvare tutte le configurazioni precedenti: premere y. Se si preme 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 la distribuzione ha avuto esito positivo:

[INFO] Deployment Status: Running
[INFO]   InstanceName:simple-todo-api-default-15-xxxxxxxxx-xxxxx  Status:Running Reason:null       DiscoverStatus:N/A       
[INFO] Getting public url of app(simple-todo-api)...
[INFO] Application url: https://<your-Azure-Spring-Apps-instance-name>-simple-todo-api.azuremicroservices.io

5. Convalidare l'app

È ora possibile accedere all'API RESTful per verificare se funziona.

5.1. Richiedere un token di accesso

Le API RESTful fungono da server di risorse, protetto dall'ID Microsoft Entra. Prima di acquisire un token di accesso, è necessario registrare un'altra applicazione in Microsoft Entra ID e concedere le autorizzazioni all'applicazione client, denominata ToDoWeb.

Registrare l'applicazione client

Seguire questa procedura per registrare un'applicazione in Microsoft Entra ID, che viene usata per aggiungere le autorizzazioni per l'app ToDo :

  1. Accedere al 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 ToDoWeb. Tale nome, che potrebbe essere visualizzato dagli utenti dell'app, può essere modificato in un secondo momento.

  6. Per Tipi di account supportati, usare solo il valore predefinito Account in questa directory organizzativa.

  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 per acquisire un token di accesso.

  9. Selezionare Autorizzazioni API>Aggiungi un'autorizzazione>Le mie API. Selezionare l'applicazione ToDo registrata in precedenza e quindi selezionare le autorizzazioni ToDo.Read, ToDo.Write e ToDo.Delete . Selezionare Aggiungi autorizzazioni.

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

    Screenshot of the Azure portal that shows the API permissions of a web application.

Aggiungere un utente per accedere alle API RESTful

Usare la procedura seguente per creare un utente membro nel tenant di Microsoft Entra. L'utente può quindi gestire i dati dell'applicazione ToDo tramite le API RESTful.

  1. In Gestisci selezionare Utenti>Nuovo utente>Crea nuovo utente.

  2. Nella pagina Crea nuovo utente immettere le informazioni seguenti:

    • Nome entità utente: immettere un nome per l'utente.
    • Nome visualizzato: immettere un nome visualizzato per l'utente.
    • Password: copiare la password generata automaticamente nella casella Password .

    Nota

    I nuovi utenti devono completare la prima autenticazione di accesso e aggiornare le password. In caso contrario, viene visualizzato un AADSTS50055: The password is expired errore quando si ottiene il token di accesso.

    Quando un nuovo utente accede, riceve una richiesta di azione richiesta . Possono scegliere Chiedi in un secondo momento per ignorare la convalida.

  3. Selezionare Revisione e creazione per rivedere le selezioni effettuate. Selezionare Crea per creare l'utente.

Aggiornare la configurazione di OAuth2 per l'autorizzazione dell'interfaccia utente di Swagger

Seguire questa procedura per aggiornare la configurazione di OAuth2 per l'autorizzazione dell'interfaccia utente di Swagger. È quindi possibile autorizzare gli utenti ad acquisire i token di accesso tramite l'app ToDoWeb .

  1. Aprire il tenant di Microsoft Entra ID nella portale di Azure e passare all'app registrataToDoWeb.

  2. In Gestisci selezionare Autenticazione, selezionare Aggiungi una piattaforma e quindi selezionare Applicazione a pagina singola.

  3. Usare il formato <your-app-exposed-application-URL-or-endpoint>/swagger-ui/oauth2-redirect.html come URL di reindirizzamento OAuth2 nel campo URI di reindirizzamento e quindi selezionare Configura.

    Screenshot of the Azure portal that shows the Authentication page for Microsoft Entra ID.

2. Preparare il progetto Spring

Per distribuire l'app per le API RESTful, il primo passaggio consiste nel preparare il progetto Spring per l'esecuzione in locale.

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/ASA-Samples-Restful-Application.git
    
  2. Se si vuole eseguire l'app in locale, completare i passaggi nelle sezioni Esporre LE API RESTful e Aggiornare prima di tutto la configurazione dell'applicazione e quindi usare il comando seguente per eseguire l'applicazione di esempio con Maven:

    cd ASA-Samples-Restful-Application
    ./mvnw spring-boot:run
    

3. Preparare l'ambiente cloud

Le risorse principali necessarie per eseguire questa app di esempio sono un'istanza di Azure Spring Apps e un'istanza di Database di Azure per PostgreSQL. Le sezioni seguenti descrivono come creare queste risorse.

3.1. Accedere al portale di Azure

Passare al portale di Azure e immettere le credenziali per accedere al portale. 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.

  2. Selezionare Calcolo di>Azure Spring Apps.

  3. Compilare il modulo Informazioni di base. Usare la tabella seguente come guida per completare il modulo. Il valore del piano consigliato è Consumo standard e dedicato (anteprima).The recommended Plan value is Standard consumption & dedicated (preview).

    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 agli utenti. Località più vicina agli utenti.
    Ambiente app contenitore myenvironment Opzione per selezionare l'istanza dell'ambiente app contenitore in cui condividere la stessa rete virtuale con altri servizi e risorse.

    Usare la tabella seguente come guida per la creazione dell'ambiente app contenitore:

    Impostazione Valore suggerito Descrizione
    Nome ambiente myenvironment Nome univoco che identifica il servizio Azure Container Apps Environment.
    Piano Consumo Il piano tariffario determina le risorse e i costi associati all'istanza.
    Ridondanza della zona Disabilitata Opzione per creare il servizio Ambiente app contenitore in una zona di disponibilità di Azure.
  4. Selezionare Rivedi e crea per esaminare le selezioni. Selezionare quindi 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.

  6. Selezionare Vai alla risorsa per aprire la pagina Panoramica del servizio.

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

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 App Azure Container e Prezzi di Azure Spring Apps.

3.3. Preparare l'istanza di PostgreSQL

Usare la procedura seguente per creare un server Database di Azure per PostgreSQL:

  1. Passare al portale di Azure e selezionare Crea una risorsa.

  2. Selezionare Database>Database di Azure per PostgreSQL.

  3. Selezionare l'opzione di distribuzione Server flessibile.

    Screenshot of the Azure portal that shows the Select Azure Database for PostgreSQL deployment option page.

  4. Compilare la scheda Informazioni di base con le informazioni seguenti:

    • Nome server: my-demo-pgsql
    • Area: Stati Uniti orientali
    • Versione di PostgreSQL: 14
    • Tipo di carico di lavoro: Sviluppo
    • Abilitare la disponibilità elevata: deselezionata
    • Metodo di autenticazione: solo autenticazione PostgreSQL
    • Amministrazione nome utente: myadmin
    • Password e Conferma password: immettere una password.
  5. Usare le informazioni seguenti per configurare la scheda Rete :

    • metodo Connessione ivity: accesso pubblico (indirizzi IP consentiti)
    • Consenti l'accesso pubblico da qualsiasi servizio di Azure in Azure a questo server: selezionato
  6. Selezionare Rivedi e crea per esaminare le selezioni e selezionare Crea per effettuare il provisioning del server. L'operazione potrebbe richiedere alcuni minuti.

  7. Passare al server PostgreSQL nel portale di Azure. Nella pagina Panoramica cercare il valore Nome server e quindi registrarlo per usarlo in un secondo momento. È necessario configurare le variabili di ambiente per l'app in Azure Spring Apps.

  8. Selezionare Database dal menu di spostamento per creare un database, ad esempio todo.

    Screenshot of the Azure portal that shows the Databases page with the Create Database pane open.

3.4. Connessione'istanza dell'app all'istanza di PostgreSQL

Usare la procedura seguente per connettere le istanze del servizio:

  1. Passare all'istanza di Azure Spring Apps nel portale di Azure.

  2. Dal menu di spostamento aprire App e quindi selezionare Crea app.

  3. Nella pagina Crea app compilare il nome dell'app simple-todo-api e selezionare Artefatti Java come tipo di distribuzione.

  4. Selezionare Crea per completare la creazione dell'app e selezionare l'app per visualizzare i dettagli.

  5. Passare all'app creata nel portale di Azure. Nella pagina Panoramica selezionare Assegna endpoint per esporre l'endpoint pubblico per l'app. Salvare l'URL per l'accesso all'app dopo la distribuzione.

  6. Passare all'app creata, espandere Impostazioni e selezionare Configurazione dal menu di spostamento e quindi selezionare Variabili di ambiente per impostare le variabili di ambiente.

  7. Aggiungere le variabili di ambiente seguenti per la connessione PostgreSQL e quindi selezionare Salva per completare l'aggiornamento della configurazione dell'app. Assicurarsi di sostituire i segnaposto con i propri valori creati in precedenza.

    Variabile di ambiente Valore
    SPRING_DATASOURCE_URL jdbc:postgresql://<your-PostgreSQL-server-name>:5432/<your-PostgreSQL-database-name>
    SPRING_DATASOURCE_USERNAME <your-PostgreSQL-admin-user>
    SPRING_DATASOURCE_PASSWORD <your-PostgreSQL-admin-password>

    Screenshot of the Azure portal that shows the Environment variables tab with all the values for the PostgreSQL connection.

3.5. Esporre le API RESTful

Seguire questa procedura per esporre le API RESTful in Microsoft Entra ID:

  1. Accedere al 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 Todo. 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 in qualsiasi directory organizzativa (Qualsiasi directory Microsoft Entra - Multi-tenant) e account Microsoft personali.

  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://simple-todoe quindi selezionare Salva.

  11. In Gestisci selezionare Esporre un'API>Aggiungi un ambito e quindi immettere le informazioni seguenti:

    • In Nome ambito immettere ToDo.Read.
    • Per Chi può fornire il consenso, selezionare solo Amministrazione.
    • Per Amministrazione nome visualizzato del consenso, immettere Leggi i dati ToDo.
    • Per Amministrazione descrizione del consenso, immettere Consenti agli utenti autenticati di leggere i dati ToDo.
    • Per Stato mantenere abilitato.
    • Seleziona Aggiungi ambito.
  12. Ripetere i passaggi precedenti per aggiungere gli altri due ambiti: ToDo.Write e ToDo.Delete.

    Screenshot of the Azure portal that shows the Expose an API page of a RESTful API application.

3.6. Aggiornare la configurazione dell'applicazione

Seguire questa procedura per aggiornare il file YAML per usare le informazioni dell'applicazione registrata di Microsoft Entra per stabilire una relazione con l'applicazione API RESTful:

  1. Individuare il file src/main/resources/application.yml per l'app simple-todo-api . 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:
            profile:
              tenant-id: <tenant>
            credential:
              client-id: <your-application-ID-of-ToDo>
            app-id-uri: <your-application-ID-URI-of-ToDo>
    

    Nota

    Nei token v1.0, la configurazione richiede l'ID client dell'API, mentre nei token v2.0 è possibile usare l'ID client o l'URI ID applicazione nella richiesta. È possibile configurare entrambi per completare correttamente la convalida del gruppo di destinatari.

    I valori consentiti per tenant-id sono: common, organizations, consumerso l'ID tenant. Per altre informazioni su questi valori, vedere la sezione Usato l'endpoint errato (account personali e dell'organizzazione) di Errore AADSTS50020 - L'account utente del provider di identità non esiste nel tenant. Per informazioni sulla conversione dell'app a tenant singolo, vedere Convertire l'app a tenant singolo in multi-tenant in Microsoft Entra ID.

  2. Usare il comando seguente per ricompilare il progetto di esempio:

    ./mvnw clean package
    

4. Distribuire l'app in Azure Spring Apps

È ora possibile distribuire l'app in App Spring di Azure.

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

  1. Passare alla directory completa e quindi eseguire il comando seguente per configurare l'app in Azure Spring Apps:

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

    L'elenco seguente descrive le interazioni con i comandi:

    • Accesso OAuth2: è necessario 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.
    • Usare le app Spring di Azure esistenti in Azure: premere y per usare l'istanza di Azure Spring Apps esistente.
    • Selezionare App Spring di Azure per la distribuzione: selezionare il numero dell'istanza di Azure Spring Apps creata. Se si usa il numero predefinito, premere INVIO direttamente.
    • Usare l'app esistente in Azure Spring Apps <nome-istanza>: premere y per usare l'app creata.
    • Confermare di salvare tutte le configurazioni precedenti: premere y. Se si preme 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 la distribuzione ha avuto esito positivo:

[INFO] Deployment(default) is successfully created
[INFO] Starting Spring App after deploying artifacts...
[INFO] Deployment Status: Running
[INFO]   InstanceName:demo--default-xxxxxxx-xxxxxxxxx-xxxxx  Status:Running Reason:null       DiscoverStatus:NONE
[INFO] Getting public url of app(demo)...
[INFO] Application url: https://demo.<unique-identifier>.<region-name>.azurecontainerapps.io

5. Convalidare l'app

È ora possibile accedere all'API RESTful per verificare se funziona.

5.1. Richiedere un token di accesso

Le API RESTful fungono da server di risorse, protetto dall'ID Microsoft Entra. Prima di acquisire un token di accesso, è necessario registrare un'altra applicazione in Microsoft Entra ID e concedere le autorizzazioni all'applicazione client, denominata ToDoWeb.

Registrare l'applicazione client

Seguire questa procedura per registrare un'applicazione in Microsoft Entra ID, che viene usata per aggiungere le autorizzazioni per l'app ToDo :

  1. Accedere al 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 ToDoWeb. Tale nome, che potrebbe essere visualizzato dagli utenti dell'app, può essere modificato in un secondo momento.

  6. Per Tipi di account supportati, usare solo il valore predefinito Account in questa directory organizzativa.

  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 per acquisire un token di accesso.

  9. Selezionare Autorizzazioni API>Aggiungi un'autorizzazione>Le mie API. Selezionare l'applicazione ToDo registrata in precedenza e quindi selezionare le autorizzazioni ToDo.Read, ToDo.Write e ToDo.Delete . Selezionare Aggiungi autorizzazioni.

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

    Screenshot of the Azure portal that shows the API permissions of a web application.

Aggiungere un utente per accedere alle API RESTful

Usare la procedura seguente per creare un utente membro nel tenant di Microsoft Entra. L'utente può quindi gestire i dati dell'applicazione ToDo tramite le API RESTful.

  1. In Gestisci selezionare Utenti>Nuovo utente>Crea nuovo utente.

  2. Nella pagina Crea nuovo utente immettere le informazioni seguenti:

    • Nome entità utente: immettere un nome per l'utente.
    • Nome visualizzato: immettere un nome visualizzato per l'utente.
    • Password: copiare la password generata automaticamente nella casella Password .

    Nota

    I nuovi utenti devono completare la prima autenticazione di accesso e aggiornare le password. In caso contrario, viene visualizzato un AADSTS50055: The password is expired errore quando si ottiene il token di accesso.

    Quando un nuovo utente accede, riceve una richiesta di azione richiesta . Possono scegliere Chiedi in un secondo momento per ignorare la convalida.

  3. Selezionare Revisione e creazione per rivedere le selezioni effettuate. Selezionare Crea per creare l'utente.

Aggiornare la configurazione di OAuth2 per l'autorizzazione dell'interfaccia utente di Swagger

Seguire questa procedura per aggiornare la configurazione di OAuth2 per l'autorizzazione dell'interfaccia utente di Swagger. È quindi possibile autorizzare gli utenti ad acquisire i token di accesso tramite l'app ToDoWeb .

  1. Aprire il tenant di Microsoft Entra ID nella portale di Azure e passare all'app registrataToDoWeb.

  2. In Gestisci selezionare Autenticazione, selezionare Aggiungi una piattaforma e quindi selezionare Applicazione a pagina singola.

  3. Usare il formato <your-app-exposed-application-URL-or-endpoint>/swagger-ui/oauth2-redirect.html come URL di reindirizzamento OAuth2 nel campo URI di reindirizzamento e quindi selezionare Configura.

    Screenshot of the Azure portal that shows the Authentication page for Microsoft Entra ID.

Ottenere il token di accesso

Usare la procedura seguente per usare il metodo del flusso del codice di autorizzazione OAuth 2.0 per ottenere un token di accesso con Microsoft Entra ID, quindi accedere alle API RESTful dell'app ToDo :

  1. Aprire l'URL esposto dall'app e quindi selezionare Autorizza per preparare l'autenticazione OAuth2.

  2. Nella finestra Autorizzazioni disponibili immettere l'ID client dell'app ToDoWeb nel campo client_id, selezionare tutti gli ambiti per Ambiti campo, ignorare il campo client_secret e quindi selezionare Autorizza per reindirizzare alla pagina di accesso di Microsoft Entra.

Dopo aver completato l'accesso con l'utente precedente, si torna alla finestra Autorizzazioni disponibili.

5.2. Accedere alle API RESTful

Usare la procedura seguente per accedere alle API RESTful dell'app ToDo nell'interfaccia utente di Swagger:

  1. Selezionare l'API POST /api/simple-todo/lists e quindi selezionare Prova. Immettere il corpo della richiesta seguente e quindi selezionare Esegui per creare un elenco ToDo.

    {
      "name": "My List"
    }
    

    Al termine dell'esecuzione, viene visualizzato il corpo della risposta seguente:

    {
      "id": "<ID-of-the-ToDo-list>",
      "name": "My List",
      "description": null
    }
    
  2. Selezionare l'API POST /api/simple-todo/lists/{listId}/items e quindi selezionare Prova. Per listId immettere l'ID elenco ToDo creato in precedenza, immettere il corpo della richiesta seguente e quindi selezionare Esegui per creare un elemento ToDo.

    {
      "name": "My first ToDo item", 
      "listId": "<ID-of-the-ToDo-list>",
      "state": "todo"
    }
    

    Questa azione restituisce l'elemento ToDo seguente:

    {
      "id": "<ID-of-the-ToDo-item>",
      "listId": "<ID-of-the-ToDo-list>",
      "name": "My first ToDo item",
      "description": null,
      "state": "todo",
      "dueDate": "2023-07-11T13:59:24.9033069+08:00",
      "completedDate": null
    }
    
  3. Selezionare l'API GET /api/simple-todo/lists e quindi selezionare Esegui per eseguire query negli elenchi ToDo. Questa azione restituisce gli elenchi ToDo seguenti:

    [
      {
        "id": "<ID-of-the-ToDo-list>",
        "name": "My List",
        "description": null
      }
    ]
    
  4. Selezionare l'API GET /api/simple-todo/lists/{listId}/items e quindi selezionare Prova. Per listId immettere l'ID elenco ToDo creato in precedenza e quindi selezionare Esegui per eseguire una query sugli elementi ToDo. Questa azione restituisce l'elemento ToDo seguente:

    [
      {
        "id": "<ID-of-the-ToDo-item>",
        "listId": "<ID-of-the-ToDo-list>",
        "name": "My first ToDo item",
        "description": null,
        "state": "todo",
        "dueDate": "2023-07-11T13:59:24.903307+08:00",
        "completedDate": null
      }
    ]
    
  5. Selezionare l'API PUT /api/simple-todo/lists/{listId}/items/{itemId} e quindi selezionare Prova. Per listId immettere l'ID elenco ToDo. Per itemId immettere l'ID elemento ToDo, immettere il corpo della richiesta seguente e quindi selezionare Esegui per aggiornare l'elemento ToDo.

    {
      "id": "<ID-of-the-ToDo-item>",
      "listId": "<ID-of-the-ToDo-list>",
      "name": "My first ToDo item",
      "description": "Updated description.",
      "dueDate": "2023-07-11T13:59:24.903307+08:00",
      "state": "inprogress"
    }
    

    Questa azione restituisce l'elemento ToDo aggiornato seguente:

    {
      "id": "<ID-of-the-ToDo-item>",
      "listId": "<ID-of-the-ToDo-list>",
      "name": "My first ToDo item",
      "description": "Updated description.",
      "state": "inprogress",
      "dueDate": "2023-07-11T05:59:24.903307Z",
      "completedDate": null
    }
    
  6. Selezionare l'API DELETE /api/simple-todo/lists/{listId}/items/{itemId} e quindi selezionare Prova. Per listId immettere l'ID elenco ToDo. Per itemId immettere l'ID elemento ToDo e quindi selezionare Esegui per eliminare l'elemento ToDo. Si noterà che il codice di risposta del server è 204.

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. Nel menu di spostamento selezionare Gruppi di risorse. Selezionare quindi 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, ad esempio myresourcegroup. Quindi, selezionare Elimina.

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. Nel menu di spostamento selezionare Gruppi di risorse. Selezionare quindi 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, ad esempio myresourcegroup. Quindi, selezionare Elimina.

7. Passaggi successivi

Per altre informazioni, vedere gli articoli seguenti: