Hinzufügen der Anmeldung mit einem Microsoft Entra-Konto zu einer Spring-Web-App

In diesem Artikel erfahren Sie, wie Sie eine Spring Web App entwickeln, die die Anmeldung über das Microsoft Entra-Konto unterstützt. Nach Abschluss aller Schritte in diesem Artikel leitet die Web-App auf die Microsoft Entra-Anmeldeseite um, wenn anonym darauf zugegriffen wird. Der folgende Screenshot zeigt die Microsoft Entra-Anmeldeseite:

Screenshot of application 'Sign in' dialog.

Voraussetzungen

Für die Durchführung der Schritte in diesem Artikel müssen folgende Voraussetzungen erfüllt sein:

Wichtig

Spring Boot Version 2.5 oder höher ist erforderlich, um die Schritte in diesem Artikel auszuführen.

Erstellen einer App mithilfe von Spring Initializr

  1. Navigieren Sie zu https://start.spring.io/.

  2. Geben Sie an, dass Sie ein Maven-Projekt mit Java generieren möchten, und geben Sie die Namen für Gruppe und Artefakt für Ihre Anwendung ein.

  3. Fügen Sie Abhängigkeiten für Spring Web, Microsoft Entra ID und OAuth2-Client hinzu.

  4. Wählen Sie unten auf der Seite die Schaltfläche GENERIEREN aus.

    Screenshot of Spring Initializr with basic options.

  5. Laden Sie das Projekt nach entsprechender Aufforderung unter einem Pfad auf dem lokalen Computer herunter.

Erstellen einer Microsoft Entra-Instanz

Erstellen der Active Directory-Instanz

Wenn Sie der Administrator einer vorhandenen Instanz sind, können Sie diesen Vorgang überspringen.

  1. Melden Sie sich bei https://portal.azure.com an.

  2. Wählen Sie "Alle Dienste" und dann "Identität" und dann "Microsoft Entra-ID" aus.

  3. Geben Sie Werte für Name der Organisation und Name der Anfangsdomäne ein. Kopieren Sie die vollständige URL Ihres Verzeichnisses. Sie verwenden die URL später in diesem Tutorial, um Benutzerkonten hinzuzufügen. (Beispiel: azuresampledirectory.onmicrosoft.com.)

    Kopieren Sie die vollständige URL Ihres Verzeichnisses. Sie verwenden die URL später in diesem Tutorial, um Benutzerkonten hinzuzufügen. (Beispiel: azuresampledirectory.onmicrosoft.com)

    Wählen Sie anschließend die Option Erstellen aus. Die Erstellung der neuen Ressource dauert einige Minuten.

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

  4. Wählen Sie nach Abschluss des Vorgangs den angezeigten Link aus, um auf das neue Verzeichnis zuzugreifen.

    Screenshot of 'Create a tenant' success message.

  5. Kopieren Sie die Tenant ID (Mandanten-ID). Sie verwenden den ID-Wert, um später in diesem Tutorial die Datei application.properties zu konfigurieren.

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

Hinzufügen einer Anwendungsregistrierung für Ihre Spring Boot-App

  1. Wählen Sie im Portalmenü App-Registrierungen und dann Anwendung registrieren aus.

  2. Geben Sie Ihre Anwendung an, und wählen Sie dann Registrieren aus.

  3. Kopieren Sie auf der angezeigten Seite für Ihre App-Registrierung den Wert für Anwendungs-ID (Client) und Verzeichnis-ID (Mandant). Sie verwenden diese Werte, um später in diesem Tutorial die Datei application.properties zu konfigurieren.

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

  4. Wählen Sie im linken Navigationsbereich Zertifikate und Geheimnisse aus. Wählen Sie dann Neuer geheimer Clientschlüssel aus.

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

  5. Fügen Sie eine Beschreibung hinzu, und wählen Sie in der Liste Gültig bis die Dauer aus. Wählen Sie Hinzufügen aus. Der Wert für den Schlüssel wird automatisch eingefügt.

  6. Kopieren und speichern Sie den Wert des geheimen Clientschlüssels, damit Sie später in diesem Tutorial die Datei application.properties konfigurieren können. (Dieser Wert kann später nicht mehr abgerufen werden.)

    Screenshot of application with new client secret highlighted.

  7. Wählen Sie auf der Hauptseite für Ihre App-Registrierung die Option Authentifizierung und dann Plattform hinzufügen aus. Wählen Sie anschließend Webanwendungen aus.

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

  8. Geben Sie http://localhost:8080/login/oauth2/code/ als neuen Umleitungs-URI ein, und wählen Sie dann Konfigurieren aus.

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

  9. Wenn Sie die pom.xml Datei so geändert haben, dass sie eine Microsoft Entra-Startversion vor 3.0.0 verwendet: Wählen Sie unter impliziter Erteilung und Hybridflüsse ID-Token (verwendet für implizite und Hybridflüsse) aus, und wählen Sie dann "Speichern" aus.

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

Hinzufügen eines Benutzerkontos zu Ihrem Verzeichnis und Hinzufügen dieses Kontos zu einer App-Rolle

  1. Wählen Sie auf der Seite Übersicht Ihrer Active Directory-Instanz die Option Benutzer und dann Neuer Benutzer aus.

  2. Geben Sie im angezeigten Bereich Benutzer den Benutzernamen und den Namen ein. Klicken Sie anschließend auf Erstellen.

    Screenshot of 'New user' dialog.

    Hinweis

    Sie müssen die Verzeichnis-URL von weiter oben in diesem Tutorial angeben, wenn Sie den Benutzernamen eingeben. Zum Beispiel:

    test-user@azuresampledirectory.onmicrosoft.com

  3. Wählen Sie auf der Hauptseite für Ihre App-Registrierung die Option App-Rollen und dann App-Rolle erstellen aus. Geben Sie Werte für die Formularfelder an, aktivieren Sie Do you want to enable this app role? (Möchten Sie diese App-Rolle aktivieren?), und wählen Sie dann Anwenden aus.

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

  4. Wählen Sie auf der Seite "Übersicht" Ihres Microsoft Entra-Verzeichnisses Enterprise-Anwendungen aus.

    Screenshot of Microsoft Entra ID 'Enterprise applications' screen.

  5. Wählen Sie Alle Anwendungen und anschließend die Anwendung aus, der Sie die App-Rolle zuvor zugewiesen haben.

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

  6. Wählen Sie Benutzer und Gruppen und dann Benutzer/Gruppe hinzufügen aus.

  7. Wählen Sie unter Benutzer die Option Keine Elemente ausgewählt aus. Wählen Sie den Benutzer aus, den Sie zuvor erstellt haben, und wählen Sie dann Auswählen und Zuweisen aus. Wenn Sie zuvor mehrere App-Rollen erstellt haben, wählen Sie eine Rolle aus.

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

  8. Navigieren Sie zurück zum Bereich Benutzer, wählen Sie Ihren Testbenutzer und die Option Kennwort zurücksetzen aus, und kopieren Sie das Kennwort. Sie verwenden das Kennwort später in diesem Tutorial, wenn Sie sich bei Ihrer Anwendung anmelden.

    Screenshot of user with 'Temporary password' field highlighted.

Konfigurieren und Kompilieren Ihrer App

  1. Extrahieren Sie die Dateien aus dem Projektarchiv, das Sie zuvor in diesem Tutorial erstellt und heruntergeladen haben, in ein Verzeichnis.

  2. Navigieren Sie in Ihrem Projekt zum Ordner src/main/resources, und öffnen Sie die Datei application.properties in einem Text-Editor.

  3. Geben Sie die Einstellungen für Ihre App-Registrierung mithilfe der zuvor erstellten Werte an. Zum Beispiel:

    # 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==
    

    Hierbei gilt:

    Parameter Beschreibung
    spring.cloud.azure.active-directory.enabled Aktivieren der von spring-cloud-azure-starter-active-directory bereitgestellten Features
    spring.cloud.azure.active-directory.profile.tenant-id Enthält die Verzeichnis-ID Ihrer Active Directory-Instanz von vorhin.
    spring.cloud.azure.active-directory.credential.client-id Enthält die Anwendungs-ID aus der zuvor durchgeführten App-Registrierung.
    spring.cloud.azure.active-directory.credential.client-secret Enthält den Wert aus dem zuvor erstellten App-Registrierungsschlüssel.
  4. Speichern und schließen Sie die Datei application.properties.

  5. Erstellen Sie einen Ordner mit dem Namen controller im Java-Quellordner für Ihre Anwendung. Beispiel: src/main/java/com/wingtiptoys/security/controller.

  6. Erstellen Sie im Ordner controller eine neue Java-Datei namens HelloController.java, und öffnen Sie sie in einem Text-Editor.

  7. Geben Sie den folgenden Code ein, speichern Sie die Datei, und schließen Sie sie:

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

Erstellen und Testen der App

  1. Öffnen Sie eine Eingabeaufforderung, und wechseln Sie zu dem Ordner, in dem sich die Datei pom.xml Ihrer App befindet.

  2. Erstellen Sie Ihre Spring Boot-Anwendung mit Maven, und führen Sie sie aus. Zum Beispiel:

    mvn clean package
    mvn spring-boot:run
    

    Screenshot of Maven build output.

  3. Nachdem Ihre Anwendung mit Maven erstellt und gestartet wurde, öffnen Sie http://localhost:8080/Admin in einem Webbrowser. Sie sollten zur Eingabe des Benutzernamens und Kennworts aufgefordert werden.

    Screenshot of application 'Sign in' dialog.

    Hinweis

    Wenn dies die erste Anmeldung für ein neues Benutzerkonto ist, werden Sie möglicherweise zum Ändern Ihres Kennworts aufgefordert.

    Screenshot of application 'Update your password' dialog.

  4. Nach erfolgreicher Anmeldung sollte der Beispieltext „Hello Admin“ des Controllers angezeigt werden.

    Screenshot of application admin message.

Zusammenfassung

In diesem Lernprogramm haben Sie eine neue Java-Webanwendung mit dem Microsoft Entra Starter erstellt, einen neuen Microsoft Entra-Mandanten konfiguriert, eine neue Anwendung im Mandanten registriert und dann Ihre Anwendung so konfiguriert, dass die Spring-Anmerkungen und -Klassen zum Schutz der Web-App verwendet werden.

Weitere Informationen

Nächste Schritte

Weitere Informationen zu Spring und Azure finden Sie im Dokumentationscenter zu Spring in Azure.