Übung: Autorisieren des Zugriffs auf die Microsoft Graph-API mit MSAL

Abgeschlossen

In dieser Übung konfigurieren Sie die Anwendung mit Berechtigungen und verwenden MSAL, um über die Microsoft Graph (MS Graph)-API auf Benutzerprofilinformationen zuzugreifen.

Hinzufügen von Microsoft Graph-Berechtigungen zur App-Registrierung

Von Microsoft Entra ID geschützte Webdienste definieren eine Gruppe von Berechtigungen, die Zugriff auf die API-Funktionalität und Daten bieten, die von diesem Dienst verfügbar gemacht werden. Bevor eine Anwendung auf Daten zugreifen oder im Namen eines Benutzers bzw. einer Benutzerin handeln kann, muss sie diese Berechtigungen anfordern, die von den Benutzer*innen genehmigt werden müssen. Sie können diese API-Berechtigungen über das Azure-Portal Ihrer App-Registrierung zuweisen. Im Folgenden werden die Schritte zum Zuweisen der Microsoft Graph-API-Berechtigungen zu Ihrer Anwendung aufgeführt:

  1. Wählen Sie auf dem Bildschirm App-Registrierungen die Option API-Berechtigungen aus, um Zugriff auf die APIs hinzuzufügen, die Ihre Anwendung benötigt.

    Screenshot zeigt das Menü des API-Berechtigungsbereichs einer App, die mit Microsoft Entra ID im Azure-Portal registriert wurde.

    • Wählen Sie Berechtigung hinzufügen aus.

    • Stellen Sie sicher, dass die Registerkarte Microsoft-APIs ausgewählt ist.

    • Wählen Sie im Abschnitt Häufig verwendete Microsoft-APIs die Option Microsoft Graph und anschließend Delegierte Berechtigung aus.

    • Scrollen Sie im Abschnitt Delegierte Berechtigungen nach unten, und wählen Sie User.Read in der Liste aus. Diese spezifische Berechtigung dient dem Zugriff auf die Informationen des angemeldeten Benutzers vom https://graph.microsoft.com/v1.0/me-Endpunkt.

    • Wählen Sie Zugriffsrechte hinzufügen.

      Screenshot zeigt den API-Berechtigungsbereichs einer App, die mit Microsoft Entra ID im Azure-Portal registriert wurde.

Ausführen der Anwendung

Sie können versuchen, den Graph-API-Aufruf für die Anwendung auszuführen, die Sie in der vorherigen Übung ausgeführt haben.

  1. Navigieren Sie in Ihrem Browser zu http://localhost:8080/msal4j-servlet-graph/. Wenn Sie noch nicht angemeldet sind, werden Sie zur Anmeldung mit Microsoft Entra ID umgeleitet. Nach erfolgreicher Anmeldung sollten Sie eine Seite wie in der folgenden Abbildung sehen.

    Screenshot zeigt die Schaltfläche zum Aufrufen von Graph auf der Seite nach erfolgreicher Anmeldung bei der Beispielanwendung.

  2. Wählen Sie Graph aufrufen aus, um den /me-Endpunkt von Microsoft Graph aufzurufen und die Benutzerdetails anzuzeigen.

Übersicht über den Code für den Microsoft Graph-Zugriff

Sie finden den Code für den Zugriff auf die Microsoft Graph-API in der Servlet-Klasse CallGraphServlet.java im Verzeichnis msal4j/callgraphwebapp/ des Beispielprojekts. Er definiert den /call_graph-Endpunkt in der Anwendung, der autorisierte Aufrufe an den https://graph.microsoft.com/v1.0/me-Endpunkt der Microsoft Graph-API ausführt, um die Profilinformationen der angemeldeten Benutzerin bzw. des angemeldeten Benutzers abzurufen. Im Folgenden finden Sie weitere Informationen über den Microsoft Graph-Zugriffscode.

  1. In der Datei ./src/main/resources/authentication.properties wird der Wert aad.scopes auf den Bereich User.Read festgelegt.

    Bereiche geben Microsoft Entra ID das Ausmaß des Zugriffs an, den die Anwendung anfordert, und weisen die Berechtigungen bei der App-Registrierung zu. Auf Grundlage der angeforderten Bereiche zeigt Microsoft Entra ID Benutzer*innen bei der Anmeldung ein Einwilligungsdialogfeld an. Wenn der Benutzer bzw. die Benutzerin zu einem oder mehreren Bereichen einwilligt, werden diese Bereiche im resultierenden Token access_token codiert, das in der Authentifizierungsantwort zurückgegeben wird.

  2. Wenn der Benutzer zu /call_graph navigiert, erstellt die Anwendung eine Instanz von IGraphServiceClient (Microsoft Graph SDK Java) und übergibt das Zugriffstoken des angemeldeten Benutzers. Der Graph-Client platziert das Zugriffstoken anschließend im Autorisierungsheader seiner Anforderungen. Die App fordert den Graph-Client dann dazu auf, den /me-Endpunkt von Microsoft Graph aufzurufen, um Details zum derzeit angemeldeten Benutzer abzurufen.

    Ein Anwendungsentwickler muss lediglich den folgenden Code für den Zugriff auf den /me-Endpunkt schreiben, sofern er bereits über ein gültiges Zugriffstoken für den Graph-Dienst mit dem User.Read-Bereich verfügt.

    //CallGraphServlet.java
    User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();