Aggiungere l'autenticazione con l'account Microsoft Entra a un'app Web Spring

Questo articolo illustra come sviluppare un'app Web Spring che supporta l'accesso account Microsoft Entra. Dopo aver completato tutti i passaggi descritti in questo articolo, l'app Web viene reindirizzata alla pagina di accesso Microsoft Entra quando si accede in modo anonimo. Lo screenshot seguente mostra la pagina di accesso di Microsoft Entra:

Screenshot della pagina di accesso Microsoft Entra per l'app Web Spring.

Prerequisiti

Per completare i passaggi descritti in questo articolo, sono necessari i prerequisiti seguenti:

  • Un Kit di Sviluppo Java (JDK) supportato. Per altre informazioni sui JDK disponibili per lo sviluppo in Azure, vedere supporto Java in Azure e Azure Stack.
  • Apache Maven, versione 3.0 o successiva.
  • Una sottoscrizione di Azure. Se non hai un abbonamento Azure, puoi creare un account gratuito .

Importante

Per completare i passaggi descritti in questo articolo, sono necessari Spring Boot di versione 2.5 o successiva.

Creare un'app con Spring Initializr

  1. Passare a https://start.spring.io/.

  2. Specificare che si vuole generare un progetto Maven con Java. Immettere i nomi di gruppo e artefatto per l'applicazione.

  3. Aggiungere dipendenze per Spring Web e client OAuth2.

  4. Nella parte inferiore della pagina selezionare il pulsante GENERA.

  5. Quando richiesto, scaricare il progetto in un percorso nel computer locale.

Aggiungere la dipendenza di Microsoft Entra

  1. Estrarre i file di progetto scaricati in una directory nel computer locale.

  2. Aprire il filepom.xml in un editor di testo.

  3. Aggiungere Spring Cloud Azure distinta base (BOM) alla <dependencyManagement> sezione .

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure.spring</groupId>
          <artifactId>spring-cloud-azure-dependencies</artifactId>
          <version>7.4.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    
  4. Aggiungere la dipendenza Azure Starter di Spring Cloud Microsoft Entra alla <dependencies> sezione .

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter-active-directory</artifactId>
    </dependency>
    
  5. Salvare e chiudere il file pom.xml.

Creare l'istanza di Microsoft Entra

Se si è l'amministratore di un'istanza esistente, è possibile ignorare questo processo.

  1. Accedere a https://portal.azure.com.

  2. Selezionare Tutti i servizi, quindi Identitye quindi Microsoft Entra ID.

  3. Immettere il nome dell'organizzazione e il nome di dominio iniziale . Copia l'URL completo della tua directory. L'URL verrà usato per aggiungere account utente più avanti in questa esercitazione. Ad esempio: azuresampledirectory.onmicrosoft.com.)

    Copia l'URL completo della tua directory. L'URL verrà usato per aggiungere account utente più avanti in questa esercitazione. (ad esempio: azuresampledirectory.onmicrosoft.com.).

    Al termine, selezionare Crea. La creazione della nuova risorsa richiederà alcuni minuti.

  4. Al termine, selezionare il collegamento visualizzato per accedere alla nuova directory.

  5. Copiare l'ID tenant . Si userà il valore ID per configurare il file application.properties più avanti in questa esercitazione.

Aggiungere una registrazione di un'applicazione per l'app Spring Boot

  1. Dal menu del portale, selezionare Registrazione delle appe quindi selezionare Registrazione di un'applicazione.

  2. Specifica l'applicazione e quindi seleziona Registra.

  3. Quando viene visualizzata la pagina per la registrazione dell'app, copiare l'ID applicazione (client) e l'ID tenant. Usare questi valori per configurare il file application.properties più avanti in questa esercitazione.

  4. Selezionare Certificati & segreti nel riquadro di navigazione. Quindi, seleziona Nuovo segreto del client.

    Schermata dell'applicazione

  5. Aggiungere una Descrizione e selezionare la durata nell'elenco scadenza. Selezionare Aggiungi. Il valore per la chiave viene compilato automaticamente.

  6. Copiare e salvare il valore del segreto client per configurare il file application.properties file più avanti in questa esercitazione. Non è possibile recuperare questo valore in un secondo momento.

    Screenshot dell'applicazione con il nuovo segreto del cliente evidenziato.

  7. Nella pagina principale per la registrazione dell'app selezionare Autenticazionee selezionare Aggiungi una piattaforma. Selezionare quindi Applicazioni Web.

  8. Per una nuova URI di reindirizzamento, immettere http://localhost:8080/login/oauth2/code/e quindi selezionare Configura.

  9. Se il file dipom.xml è stato modificato per usare una versione iniziale di Microsoft Entra precedente alla 3.0.0: in Concessione implicita e flussi ibridi selezionare token ID (usati per flussi impliciti e ibridi) e quindi selezionare Salva.

Aggiungere un account utente e assegnare un ruolo dell'app Microsoft Entra

  1. Nella pagina Panoramica del tenant di Microsoft Entra ID selezionare Utenti e quindi Nuovo utente.

  2. Quando viene visualizzato il pannello Utente, inserire il nome utente e Nome. Selezionare quindi Crea.

    Screenshot della finestra di dialogo Nuovo utente per la creazione di un account utente.

    Nota

    È necessario specificare l'URL della directory menzionato prima in questo tutorial quando si immette il nome utente. Per esempio:

    test-user@azuresampledirectory.onmicrosoft.com

  3. Nella pagina principale per la registrazione dell'app selezionare Ruoli app e quindi selezionare Crea ruolo app. Specificare i valori per i campi modulo, selezionare Abilitare il ruolo dell'app? e quindi selezionare Applica.

    Schermata dell'applicazione 'Ruoli app' con il riquadro 'Crea ruolo app' visibile.

  4. Nella pagina Panoramica della directory Microsoft Entra, seleziona Applicazioni aziendali.

  5. Selezionare Tutte le applicazioni e quindi selezionare l'applicazione a cui è stato aggiunto il ruolo app in un passaggio precedente.

  6. Selezionare Utenti e gruppi e quindi Aggiungi utenti/gruppo.

  7. In Utentiselezionare Nessuno selezionato. Selezionare l'utente creato in precedenza, selezionare Seleziona e quindi selezionare Assegna. Se in precedenza sono stati creati più ruoli nell'app, selezionare un ruolo.

  8. Tornare al pannello Utenti , selezionare l'utente di test e selezionare Reimposta password. Copiare la password. La password viene usata quando si accede all'applicazione più avanti in questa esercitazione.

Configurare e compilare l'app

  1. Estrarre i file dall'archivio del progetto creato e scaricato in precedenza in questo tutorial in una directory.

  2. Passare alla cartella src/main/resources nel progetto e quindi aprire il file application.properties in un editor di testo.

  3. Specificare le impostazioni per la registrazione dell'app usando i valori creati in precedenza. Per esempio:

    # Enable related features.
    spring.cloud.azure.active-directory.enabled=true
    # Specifies your Microsoft Entra ID tenant ID:
    spring.cloud.azure.active-directory.profile.tenant-id=<tenant-ID>
    # Specifies your App Registration's Application ID:
    spring.cloud.azure.active-directory.credential.client-id=<client-ID>
    # Specifies your App Registration's secret key:
    spring.cloud.azure.active-directory.credential.client-secret=<client-secret>
    

    Dove:

    Parametro Descrizione
    spring.cloud.azure.active-directory.enabled Abilita le funzionalità fornite da spring-cloud-azure-starter-active-directory.
    spring.cloud.azure.active-directory.profile.tenant-id Contiene l'ID tenant del tenant di Microsoft Entra ID menzionato in precedenza.
    spring.cloud.azure.active-directory.credential.client-id Contiene l'ID applicazione dalla registrazione della tua app che hai completato in precedenza.
    spring.cloud.azure.active-directory.credential.client-secret Contiene il valore dalla chiave di registrazione dell'app che hai completato in precedenza.
  4. Salvare e chiudere il file application.properties.

  5. Creare una cartella denominata controller nella cartella di origine Java per l'applicazione. Ad esempio: src/main/java/com/wingtiptoys/security/controller.

  6. Creare un nuovo file Java denominato HelloController.java nella cartella controller e aprirlo in un editor di testo.

  7. Immettere il codice seguente e quindi salvare e chiudere il file:

    package com.wingtiptoys.security;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.security.access.prepost.PreAuthorize;
    
    @RestController
    public class HelloController {
         @GetMapping("Admin")
         @ResponseBody
         @PreAuthorize("hasAuthority('APPROLE_Admin')")
         public String Admin() {
             return "Admin message";
         }
    }
    

Compilare e testare l'app

  1. Aprire un prompt dei comandi e passare alla cartella in cui si trova il file pom.xml dell'app.

  2. Compilare l'applicazione Spring Boot con Maven ed eseguirla. Per esempio:

    mvn clean package
    mvn spring-boot:run
    
  3. Dopo la compilazione e l'avvio dell'applicazione Maven, aprire http://localhost:8080/Admin in un Web browser. Viene richiesto un nome utente e una password.

    finestra di dialogo dell'applicazione 'Accedi'.

    Nota

    Potrebbe essere richiesto di modificare la password se si tratta del primo accesso per un nuovo account utente.

    schermata dell'applicazione 'Aggiorna la password'.

  4. Dopo l'accesso, viene visualizzato il testo di esempio "Messaggio di amministratore" dal controller.

    Screenshot del messaggio di amministratore dell'applicazione.

Sommario

In questa esercitazione è stata creata una nuova applicazione Web Java usando l'utilità di avvio Microsoft Entra, è stato configurato un nuovo tenant Microsoft Entra, è stata registrata una nuova applicazione nel tenant e quindi è stata configurata l'applicazione in modo da usare le annotazioni e le classi Spring per proteggere l'app Web.

Vedere anche

Passaggi successivi

Per altre informazioni su Spring e Azure, passare al Centro documentazione di Spring in Azure.