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

Questo articolo illustra come sviluppare un'app Web Spring che supporta l'accesso da parte dell'account Microsoft Entra. Dopo aver completato tutti i passaggi di questo articolo, l'app Web verrà reindirizzata alla pagina di accesso di Microsoft Entra quando è stato eseguito l'accesso anonimo. Lo screenshot seguente mostra la pagina di accesso di Microsoft Entra:

Screenshot of application 'Sign in' dialog.

Prerequisiti

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

Importante

Spring Boot versione 2.5 o successiva è necessario per completare i passaggi descritti in questo articolo.

Creare un'app con Spring Initializr

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

  2. Specificare che si vuole generare un progetto Maven con Java, quindi immettere i nomi in Group (Gruppo) e Artifact (Artefatto) per l'applicazione.

  3. Aggiungere dipendenze per Spring Web, Microsoft Entra ID e client OAuth2.

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

    Screenshot of Spring Initializr with basic options.

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

Creare un'istanza di Microsoft Entra

Creare l'istanza di Active Directory

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 Identità e quindi ID Microsoft Entra.

  3. Immettere il Nome organizzazione e il Nome di dominio iniziale. Copiare l'URL completo della directory. L'URL verrà usato per aggiungere account utente più avanti in questa esercitazione. ad esempio: azuresampledirectory.onmicrosoft.com.

    Copiare l'URL completo della 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.

    Screenshot of the Configuration section of the Microsoft Entra ID 'Create a tenant' screen.

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

    Screenshot of 'Create a tenant' success message.

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

    Screenshot of Microsoft Entra tenant screen with 'Tenant ID' highlighted.

Aggiungere una registrazione per l'app Spring Boot

  1. Selezionare Registrazioni app dal menu del portale e quindi selezionare Registra un'applicazione.

  2. Selezionare l'applicazione e quindi Registra.

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

    Screenshot of application with 'Application (client) ID' and 'Directory (tenant) ID' highlighted.

  4. Selezionare Certificati e segreti nel riquadro di spostamento sinistro. Selezionare infine Nuovo segreto client.

    Screenshot of application 'Certificates & secrets' screen with 'New client secret' highlighted.

  5. Aggiungere una Descrizione e selezionare durata nell'elenco Scade. Selezionare Aggiungi. Il valore della chiave verrà compilato automaticamente.

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

    Screenshot of application with new client secret highlighted.

  7. Nella pagina principale della registrazione dell'app selezionare Autenticazione e quindi Aggiungi una piattaforma. Selezionare quindi Applicazioni Web.

    Screenshot of application Authentication screen with 'Configure platforms' section showing and Web platform highlighted.

  8. Immettere http://localhost:8080/login/oauth2/code/ come nuovo URI di reindirizzamento e quindi selezionare Configura.

    Screenshot of application Authentication screen with 'Configure Web' section showing and 'Redirect URIs' highlighted.

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

    Screenshot of application Authentication screen with 'ID tokens' selected.

Aggiungere un account utente alla directory e aggiungerlo a un appRole

  1. Nella pagina Panoramica di Active Directory selezionare Utenti e quindi Nuovo utente.

  2. Quando viene visualizzato il pannello Utente, immettere i valori per Nome utente e Nome. Selezionare Crea.

    Screenshot of 'New user' dialog.

    Nota

    È necessario specificare l'URL della directory precedente in questa esercitazione quando si immette il nome utente. Ad 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.

    Screenshot of application 'App roles' screen with 'Create app role' pane showing.

  4. Nella pagina Panoramica della directory Microsoft Entra selezionare Applicazioni aziendali.

    Screenshot of Microsoft Entra ID 'Enterprise applications' screen.

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

    Screenshot of 'Enterprise applications' screen with 'All applications' list showing.

  6. Selezionare Utenti e gruppi, quindi selezionare Aggiungi utente/gruppo.

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

    Screenshot of application 'Add Assignment' screen with Users pane showing.

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

    Screenshot of user with 'Temporary password' field highlighted.

Configurare e compilare l'app

  1. Estrarre i file da dall'archivio di progetti creato e scaricato in precedenza in questa esercitazione in una directory.

  2. Passare alla cartella src/main/resources nel progetto, 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. Ad esempio:

    # Enable related features.
    spring.cloud.azure.active-directory.enabled=true
    # Specifies your Active Directory ID:
    spring.cloud.azure.active-directory.profile.tenant-id=22222222-2222-2222-2222-222222222222
    # Specifies your App Registration's Application ID:
    spring.cloud.azure.active-directory.credential.client-id=11111111-1111-1111-1111-1111111111111111
    # Specifies your App Registration's secret key:
    spring.cloud.azure.active-directory.credential.client-secret=AbCdEfGhIjKlMnOpQrStUvWxYz==
    

    Dove:

    Parametro Descrizione
    spring.cloud.azure.active-directory.enabled Abilitare le funzionalità fornite da spring-cloud-azure-starter-active-directory
    spring.cloud.azure.active-directory.profile.tenant-id Contiene il valore di ID directory di Active Directory copiato in precedenza.
    spring.cloud.azure.active-directory.credential.client-id Contiene il valore di ID applicazione della registrazione dell'app completata in precedenza.
    spring.cloud.azure.active-directory.credential.client-secret Contiene il valore della chiave di registrazione dell'app completata 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, 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 cambiare la directory passando alla cartella in cui si trova il file pom.xml dell'app.

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

    mvn clean package
    mvn spring-boot:run
    

    Screenshot of Maven build output.

  3. Dopo che l'applicazione è stata compilata e avviata da Maven, aprire http://localhost:8080/Admin in un Web browser. Verrà richiesto un nome utente e una password.

    Screenshot of application 'Sign in' dialog.

    Nota

    È possibile che venga richiesta la modifica della password se questo è il primo accesso per un nuovo account utente.

    Screenshot of application 'Update your password' dialog.

  4. Dopo aver eseguito l'accesso, verrà visualizzato il testo "Amministrazione message" di esempio dal controller.

    Screenshot of application admin message.

Riepilogo

In questa esercitazione è stata creata una nuova applicazione Web Java usando Microsoft Entra starter, è stato configurato un nuovo tenant di Microsoft Entra, è stata registrata una nuova applicazione nel tenant e quindi è stata configurata l'applicazione per l'uso delle annotazioni e delle classi Spring per proteggere l'app Web.

Vedi anche

Passaggi successivi

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