Freigeben über


Aktivieren der Anmeldung für Java Tomcat-Apps mithilfe der Microsoft Entra-ID

In diesem Artikel wird eine Java Tomcat-App veranschaulicht, die Benutzer mit der Microsoft-Authentifizierungsbibliothek (MSAL) für Java bei Ihrem Microsoft Entra ID-Mandanten anmeldet.

In der folgenden Abbildung wird die Topologie für diese App veranschaulicht:

Diagramm mit einer Übersicht über die Topologie der App.

Die Client-App verwendet MSAL für Java (MSAL4J), um Benutzer bei einem Microsoft Entra ID-Mandanten anzumelden und ein ID-Token von Microsoft Entra ID abzurufen. Das ID-Token beweist, dass ein Benutzer bei diesem Mandanten authentifiziert wird. Die App schützt ihre Routen entsprechend dem Authentifizierungsstatus des Benutzers.

Voraussetzungen

  • JDK Version 8 oder höher
  • Maven 3
  • Microsoft Entra ID-Mandant. Weitere Informationen finden Sie unter So erhalten Sie einen Microsoft Entra ID-Mandanten.
  • Ein Benutzerkonto in Ihrem eigenen Microsoft Entra ID-Mandanten, wenn Sie nur mit Konten in Ihrem Organisationsverzeichnis arbeiten möchten, d. h. im Einzelmandantenmodus. Wenn Sie noch kein Benutzerkonto in Ihrem Microsoft Entra ID-Mandanten erstellt haben, sollten Sie dies tun, bevor Sie fortfahren. Weitere Informationen finden Sie unter Erstellen, Einladen und Löschen von Benutzern.
  • Ein Benutzerkonto im Microsoft Entra ID-Mandanten einer Organisation, wenn Sie mit Konten in einem beliebigen Organisationsverzeichnis arbeiten möchten , d. h. im Mehrinstanzenmodus. Sie müssen dieses Beispiel ändern, um mit einem persönlichen Microsoft-Konto zu arbeiten. Wenn Sie noch kein Benutzerkonto in Ihrem Microsoft Entra ID-Mandanten erstellt haben, sollten Sie dies tun, bevor Sie fortfahren. Weitere Informationen finden Sie unter Erstellen, Einladen und Löschen von Benutzern.
  • Ein persönliches Microsoft-Konto , z. B. Xbox, Hotmail, Live usw., wenn Sie mit persönlichen Microsoft-Konten arbeiten möchten.

Empfehlungen

  • Vertrautheit mit den Java / Jakarta Servlets.
  • Vertrautheit mit Linux/OSX-Terminal.
  • jwt.ms zum Überprüfen Ihrer Token.
  • Fiddler zur Überwachung Ihrer Netzwerkaktivität und Problembehandlung.
  • Lesen Sie den Microsoft Entra ID-Blog, um mit den neuesten Entwicklungen auf dem neuesten Stand zu bleiben.

Einrichten des Beispiels

Die folgenden Abschnitte zeigen Ihnen, wie der Beispielcode für die Anwendung eingerichtet wird.

Klonen oder Herunterladen des Beispielrepositorys

Um das Beispiel zu klonen, öffnen Sie ein Bash-Fenster, und verwenden Sie den folgenden Befehl:

git clone https://github.com/Azure-Samples/ms-identity-msal-java-samples.git
cd 3-java-servlet-web-app/1-Authentication/sign-in

Wechseln Sie alternativ zum Repository ms-identity-msal-java-samples, laden Sie es dann als .zip-Datei herunter, und extrahieren Sie diese auf Ihre Festplatte.

Wichtig

Um Längenbeschränkungen für Dateipfade unter Windows zu vermeiden, klonen oder extrahieren Sie das Repository in ein Verzeichnis in der Nähe des Stamms Ihrer Festplatte.

Registrieren der Beispielanwendung bei Ihrem Microsoft Entra ID-Mandanten

Dieses Beispiel enthält ein einzelnes Projekt. In diesem Abschnitt erfahren Sie, wie Sie die App registrieren.

Registrieren Sie zunächst eine neue App im Azure-Portal, indem Sie die Anweisungen unter Schnellstart: Registrieren einer Anwendung bei Microsoft Identity Platform befolgen.

Führen Sie anschließend die folgenden Schritte zum Abschließen der Registrierung aus:

  1. Navigieren Sie zur Seite App-Registrierungen von Microsoft Identity Platform für Entwickler.

  2. Wählen Sie Neue Registrierung aus.

  3. Geben Sie auf der daraufhin angezeigten Seite Anwendung registrieren die folgenden Registrierungsinformationen Ihrer App ein:

    • Geben Sie im Abschnitt Name einen aussagekräftigen Anwendungsnamen ein, der den Benutzern der App angezeigt wird (beispielsweise java-servlet-webapp-authentication).

    • Wählen Sie unter Unterstützte Kontotypen eine der folgenden Optionen aus:

      • Wählen Sie Nur Konten in diesem Organisationsverzeichnis aus, wenn Sie eine Anwendung erstellen, die nur von Benutzern im Organisationsmandanten (einzelner Mandant) verwendet werden soll.
      • Wählen Sie Konten in einem beliebigen Organisationsverzeichnis aus, wenn Sie möchten, dass Benutzer in einem beliebigen Microsoft Entra ID-Mandanten Ihre Anwendung verwenden können – d. h. eine mehrinstanzenfähige Anwendung.
      • Wählen Sie Konten in einem beliebigen Organisationsverzeichnis und persönliche Microsoft-Konten für die größte Gruppe von Kunden (mehrere Mandanten, die auch persönliche Microsoft-Konten unterstützen).
      • Wählen Sie Persönliche Microsoft-Konten aus, wenn nur Benutzer mit persönlichen Microsoft-Konten die Anwendung verwenden sollen (z. B. Hotmail-, Live-, Skype- und Xbox-Konten)
    • Wählen Sie im Abschnitt Umleitungs-URI (optional) im Kombinationsfeld die Option Web aus, und geben Sie die folgenden Umleitungs-URIs ein:http://localhost:8080/msal4j-servlet-auth/auth/redirect

  4. Wählen Sie Registrieren aus, um die Anwendung zu erstellen.

  5. Suchen Sie auf der Registrierungsseite der App den Wert Anwendungsclient-ID, und notieren Sie ihn zur späteren Verwendung. Sie verwenden diesen Wert in den Konfigurationsdateien Ihrer App.

  6. Wählen Sie auf der Registrierungsseite der App Zertifikate & Geheimnisse aus, um die Seite zu öffnen, in dem Sie Geheimnisse generieren und Zertifikate hochladen können.

  7. Wählen Sie im Abschnitt Geheime Clientschlüssel die Option Neuer geheimer Clientschlüssel aus.

  8. Geben Sie eine Beschreibung ein (z. B. App-Geheimnis).

  9. Wählen Sie eine der verfügbaren Laufzeiten aus: In 1 Jahr, In 2 Jahren oder Läuft nie ab.

  10. Wählen Sie Hinzufügen. Der generierte Wert wird angezeigt.

  11. Kopieren und speichern Sie den generierten Wert zur Verwendung in späteren Schritten. Sie benötigen diesen Wert für die Konfigurationsdateien des Codes. Dieser Schlüsselwert wird nicht erneut angezeigt, und Sie können ihn auch nicht auf andere Weise abrufen. Achten Sie daher darauf, ihn aus dem Azure-Portal zu speichern, bevor Sie zu einem anderen Bildschirm oder Bereich navigieren.


Konfigurieren der App für die Verwendung der App-Registrierung

Führen Sie die folgenden Schritte aus, um die App zu konfigurieren:

Hinweis

In den folgenden Schritten ist ClientID identisch mit Application ID oder AppId.

  1. Öffnen Sie das Projekt in Ihrem IDE.

  2. Öffnen Sie die Datei ./src/main/resources/authentication.properties.

  3. Suchen Sie die Zeichenfolge {enter-your-tenant-id-here}. Ersetzen Sie den vorhandenen Wert durch einen der folgenden Werte:

    • Ihre Microsoft Entra ID-Mandanten-ID, wenn Sie Ihre App mit den Konten in diesem Organisationsverzeichnis nur registriert haben.
    • Das Wort organizations, wenn Sie Ihre App mit den Konten in einer beliebigen Organisationsverzeichnisoption registriert haben.
    • Das Wort common, wenn Sie Ihre App mit der Option Konten in einem beliebigen Organisationsverzeichnis und persönliche Microsoft-Konten registriert haben.
    • Das Wort consumers, wenn Sie Ihre App mit der Option Persönliche Microsoft-Konten registriert haben.
  4. Suchen Sie die Zeichenfolge {enter-your-client-id-here}, und ersetzen Sie den vorhandenen Wert durch die Anwendungs-ID clientId der java-servlet-webapp-authentication-Anwendung, die Sie aus dem Azure-Portal kopiert haben.

  5. Suchen Sie die Zeichenfolge {enter-your-client-secret-here}, und ersetzen Sie den vorhandenen Wert durch den Wert, den Sie beim Erstellen derjava-servlet-webapp-authentication-App im Azure-Portal gespeichert haben.

Erstellen des Beispiels

Um das Beispiel mit Maven zu erstellen, navigieren Sie zu dem Verzeichnis, das die pom.xml-Datei für das Beispiel enthält, und führen Sie dann den folgenden Befehl aus:

mvn clean package

Dieser Befehl generiert eine .war-Datei, die Sie auf verschiedenen Anwendungsservern ausführen können.

Ausführen des Beispiels

In den folgenden Abschnitten wird veranschaulicht, wie Sie das Beispiel in Azure App Service bereitstellen.

Voraussetzungen

Konfigurieren des Maven-Plug-Ins

Bei der Bereitstellung für Azure App Service werden automatisch Ihre Azure-Anmeldeinformationen aus der Azure CLI verwendet. Wenn die Azure CLI nicht lokal installiert ist, führt das Maven-Plug-In die Authentifizierung über OAuth oder die Geräteanmeldung durch. Weitere Informationen finden Sie unter Authentifizierung mit Maven-Plug-Ins.

Gehen Sie wie folgt vor, um das Plug-In zu konfigurieren:

  1. Führen Sie folgenden Befehl aus, um die Bereitstellung zu konfigurieren. Dieser Befehl unterstützt Sie beim Einrichten des Azure App Service-Betriebssystems, der Java-Version und der Tomcat-Version.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
    
  2. Drücken Sie für Neue Ausführungskonfiguration erstellen die Taste Y und dann die Eingabetaste.

  3. Drücken Sie für Wert für Betriebssystem die Taste 1 für Windows oder 2 für Linux und dann die Eingabetaste.

  4. Drücken Sie für Wert für javaVersion definieren die Taste 2 für Java 11 und dann die Eingabetaste.

  5. Drücken Sie für Wert definieren für webContainer die Taste 4 für Tomcat 9.0 und dann die Eingabetaste.

  6. Drücken Sie für Wert definieren für pricingTier die Eingabetaste, um die P1v2-Standardschicht auszuwählen.

  7. Drücken Sie zum Bestätigen die Taste Y und dann die Eingabetaste.

Das folgende Beispiel zeigt die Ausgabe des Bereitstellungsprozesses:

Please confirm webapp properties
AppName : msal4j-servlet-auth-1707209552268
ResourceGroup : msal4j-servlet-auth-1707209552268-rg
Region : centralus
PricingTier : P1v2
OS : Linux
Java Version: Java 11
Web server stack: Tomcat 9.0
Deploy to slot : false
Confirm (Y/N) [Y]: [INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  37.112 s
[INFO] Finished at: 2024-02-06T08:53:02Z
[INFO] ------------------------------------------------------------------------

Nachdem Sie Ihre Auswahl bestätigt haben, fügt das Plug-in das erforderliche Plug-in-Element und die Einstellungen in der pom.xml-Datei Ihres Projekts hinzu, um Ihre App zur Ausführung in Azure App Service zu konfigurieren.

Der relevante Teil der pom.xml-Datei sollte ähnlich wie im folgenden Beispiel aussehen.

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>your-resourcegroup-name</resourceGroup>
                <appName>your-app-name</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>

Sie können die Konfigurationen für App Service direkt in der Datei pom.xml ändern. Einige gängige Konfigurationen sind in der folgenden Tabelle aufgeführt:

Eigenschaft Erforderlich Beschreibung
subscriptionId false Die Abonnement-ID.
resourceGroup true Die Azure-Ressourcengruppe für Ihre App.
appName true Der Name Ihrer App.
region false Die Region, in der Ihre App gehostet werden soll. Der Standardwert ist centralus. Gültige Regionen finden Sie unter Unterstützte Regionen.
pricingTier false Der Tarif für Ihre App. Der Standardwert ist P1v2 für eine Produktionsworkload. Der empfohlene Mindestwert für die Java-Entwicklung und -Tests ist B2. Weitere Informationen finden Sie unter App Service – Preise.
runtime false Die Laufzeitumgebungskonfiguration. Weitere Informationen finden Sie unter Konfigurationsdetails.
deployment false Die Bereitstellungskonfiguration. Weitere Informationen finden Sie unter Konfigurationsdetails.

Eine vollständige Liste der Konfigurationen finden Sie in der Dokumentation zur Plug-In-Referenz. Alle Azure Maven-Plug-ins verwenden einen gemeinsamen Satz von Konfigurationen. Diese Konfigurationen finden Sie unter Allgemeine Konfigurationen. Azure App Service-spezifische Konfigurationen finden Sie unter Azure-App: Konfigurationsdetails.

Denken Sie daran, die Werte für appName und resourceGroup zur späteren Verwendung zu speichern.

Vorbereiten der App zur Bereitstellung

Wenn Sie Ihre Anwendung in App Service bereitstellen, ändert sich ihre Umleitungs-URL in die Umleitungs-URL Ihrer bereitgestellten App-Instanz. Führen Sie die folgenden Schritte aus, um diese Einstellungen in der Eigenschaftsdatei zu ändern:

  1. Navigieren Sie zur Datei authentication.properties, und ändern Sie den Wert app.homePage des Domänennamens Ihrer bereitgestellten App hinzu, wie im folgenden Beispiel gezeigt. Wenn Sie beispielsweise example-domain als den App-Namen ausgewählt haben, müssen Sie jetzt https://example-domain.azurewebsites.net für den Wert app.homePage verwenden. Stellen Sie sicher, dass Sie das Protokoll auch von http in https geändert haben.

    # app.homePage is by default set to dev server address and app context path on the server
    # for apps deployed to azure, use https://your-sub-domain.azurewebsites.net
    app.homePage=https://<your-app-name>.azurewebsites.net
    
  2. Verwenden Sie nach dem Speichern dieser Datei den folgenden Befehl, um Ihre App neu zu erstellen:

    mvn clean package
    

Wichtig

In derselben Datei authentication.properties haben Sie eine Einstellung für aad.secret. Es empfiehlt sich nicht, diesen Wert für App Service bereitzustellen. Ebenso wenig ist es eine bewährte Methode, diesen Wert in Ihrem Code zu belassen und ihn möglicherweise an Ihr Git-Repository zu übertragen. Wenn Sie diesen geheimen Wert aus Ihrem Code entfernen möchten, finden Sie ausführlichere Anleitungen im Abschnitt Bereitstellen in App Service – Geheimwert entfernen ". Diese Anleitung fügt zusätzliche Schritte zum Pushen des geheimen Werts an Key Vault und zum Verwenden von Key Vault-Verweisen hinzu.

Aktualisieren Sie die Registrierung Ihrer Microsoft Entra ID-App.

Da sich der Umleitungs-URI in Ihrer bereitgestellten App in Azure App Service ändert, müssen Sie auch den Umleitungs-URI in Ihrer Microsoft Entra ID-App-Registrierung ändern. Durchlaufen Sie folgende Schritte, um diese Änderung wirksam zu machen:

  1. Navigieren Sie zur Seite App-Registrierungen von Microsoft Identity Platform für Entwickler.

  2. Verwenden Sie das Suchfeld, um nach Ihrer App-Registrierung zu suchen. Beispiel: java-servlet-webapp-authentication.

  3. Öffnen Sie die App-Registrierung, indem Sie den Namen auswählen.

  4. Wählen Sie im oberen Menü Authentifizierung aus.

  5. Wählen Sie unter Web - Umleitungs-URIs die Option URI hinzufügen aus.

  6. Füllen Sie den URI Ihrer App aus, indem Sie /auth/redirect anfügen. Beispiel: https://<your-app-name>.azurewebsites.net/auth/redirect.

  7. Wählen Sie Speichern.

Bereitstellen der App

Sie können Ihre App jetzt in Azure App Service bereitstellen. Verwenden Sie den folgenden Befehl, um sicherzustellen, dass Sie bei Ihrer Azure-Umgebung angemeldet sind, um die Bereitstellung auszuführen:

az login

Wenn alle Konfigurationseinstellungen in Ihrer pom.xml-Datei eingerichtet sind, können Sie Ihre Java-App mit einem einzigen Befehl in Azure bereitstellen:

mvn package azure-webapp:deploy

Nach Abschluss der Bereitstellung steht Ihre Anwendung unter http://<your-app-name>.azurewebsites.net/ bereit. Öffnen Sie die URL mit Ihrem lokalen Webbrowser, in dem die Startseite der msal4j-servlet-auth-Anwendung angezeigt werden soll.

Untersuchen des Beispiels

Gehen Sie folgendermaßen vor, um das Beispiel zu erkunden:

  1. Beachten Sie den angemeldeten oder abgemeldeten Status, der in der Mitte des Bildschirms angezeigt wird.
  2. Wählen Sie in der Ecke die Schaltfläche „Kontextsensitiv“ aus. Diese Schaltfläche lautet Anmelden, wenn Sie die App zum ersten Mal ausführen.
  3. Folgen Sie auf der nächsten Seite den Anweisungen, und melden Sie sich mit einem Konto im Microsoft Entra ID-Mandanten an.
  4. Beachten Sie auf dem Einwilligungsbildschirm die angeforderten Bereiche.
  5. Beachten Sie, dass die kontextsensitive Schaltfläche jetzt Abmelden lautet und Ihren Benutzernamen anzeigt.
  6. Klicken Sie auf ID-Tokendetails, um die decodierten Ansprüche des ID-Tokens anzuzeigen.
  7. Verwenden Sie die Schaltfläche in der Ecke, um sich abzumelden.
  8. Nachdem Sie sich abgemeldet haben, wählen Sie ID-Tokendetails aus, um zu beobachten, dass die App einen 401: unauthorized-Fehler anstelle der ID-Tokenansprüche anzeigt, wenn der Benutzer nicht autorisiert ist.

Informationen zum Code

In diesem Beispiel wird gezeigt, wie Sie MSAL für Java (MSAL4J) verwenden, um Benutzer bei Ihrem Microsoft Entra ID-Mandanten anzumelden. Wenn Sie MSAL4J in Ihren eigenen Anwendungen verwenden möchten, müssen Sie es Ihren Projekten mit Maven hinzufügen.

Wenn Sie das Verhalten dieses Beispiels replizieren möchten, können Sie die pom.xml-Datei und den Inhalt der Hilfs- und authservlets--Ordner im Ordner src/main/java/com/microsoft/azuresamples/msal4j kopieren. Außerdem benötigen Sie die authentication.properties-Datei. Diese Klassen und Dateien enthalten generischen Code, den Sie in einer breiten Palette von Anwendungen verwenden können. Sie können auch den Rest des Beispiels kopieren, aber die anderen Klassen und Dateien werden speziell für das Ziel dieses Beispiels erstellt.

Contents

Die folgende Tabelle zeigt den Inhalt des Beispielprojektordners:

Datei/Ordner Beschreibung
src/main/java/com/microsoft/azuresamples/msal4j/authwebapp/ Dieses Verzeichnis enthält die Klassen, die die Back-End-Geschäftslogik der App definieren.
src/main/java/com/microsoft/azuresamples/msal4j/authservlets/ Dieses Verzeichnis enthält die Klassen, die für Anmelde- und Abmeldeendpunkte verwendet werden.
____Servlet.java Alle verfügbaren Endpunkte werden in .java Klassen definiert, die auf ____Servlet.java enden.
src/main/java/com/microsoft/azuresamples/msal4j/helpers/ Hilfsklassen für die Authentifizierung.
AuthenticationFilter.java Leitet nicht authentifizierte Anforderungen an geschützte Endpunkte auf eine 401-Seite um.
src/main/resources/authentication.properties Microsoft Entra ID und Programmkonfiguration.
src/main/webapp/ Dieses Verzeichnis enthält die Benutzeroberfläche – JSP-Vorlagen
CHANGELOG.md Liste der Änderungen am Beispiel.
CONTRIBUTING.md Richtlinien für einen Beitrag zum Beispiel.
LIZENZ Die Lizenz für das Beispiel.

ConfidentialClientApplication

Eine ConfidentialClientApplication Instanz wird in der AuthHelper.java-Datei erstellt, wie im folgenden Beispiel gezeigt. Dieses Objekt hilft beim Erstellen der Microsoft Entra ID-Autorisierungs-URL und auch beim Austauschen des Authentifizierungstokens für ein Zugriffstoken.

// getConfidentialClientInstance method
IClientSecret secret = ClientCredentialFactory.createFromSecret(SECRET);
confClientInstance = ConfidentialClientApplication
                     .builder(CLIENT_ID, secret)
                     .authority(AUTHORITY)
                     .build();

Es werden die folgenden Parameter für die Instanziierung verwendet:

  • Die Client-ID der App.
  • Der geheime Clientschlüssel, der eine Anforderung für vertrauliche Clientanwendungen ist.
  • Die Microsoft Entra ID Authority, die Ihren Microsoft Entra ID-Mandanten enthält.

In diesem Beispiel werden diese Werte aus der Datei authentication.properties mithilfe eines Eigenschaftenlesers in der Config.java-Datei gelesen.

Ausführliche exemplarische Vorgehensweise

Die folgenden Schritte bieten eine exemplarische Vorgehensweise für die Funktionalität der App:

  1. Der erste Schritt des Anmeldeprozesses besteht darin, eine Anforderung an den /authorize-Endpunkt des Microsoft Entra ID-Mandanten zu senden. Die ConfidentialClientApplication-Instanz von MSAL4J wird verwendet, um eine Autorisierungsanforderungs-URL zu erstellen. Die App leitet den Browser an diese URL um, über die der Benutzer sich dann anmeldet.

    final ConfidentialClientApplication client = getConfidentialClientInstance();
    AuthorizationRequestUrlParameters parameters = AuthorizationRequestUrlParameters.builder(Config.REDIRECT_URI, Collections.singleton(Config.SCOPES))
            .responseMode(ResponseMode.QUERY).prompt(Prompt.SELECT_ACCOUNT).state(state).nonce(nonce).build();
    
    final String authorizeUrl = client.getAuthorizationRequestUrl(parameters).toString();
    contextAdapter.redirectUser(authorizeUrl);
    

    In der folgenden Liste werden die Features dieses Codes beschrieben:

    • AuthorizationRequestUrlParameters: Diese Parameter müssen zum Erstellen einer AuthorizationRequestUrl-Klasse festgelegt werden.

    • REDIRECT_URI: Wo Microsoft Entra ID den Browser - zusammen mit dem Authentifizierungscode - umleitet, nachdem die Benutzeranmeldeinformationen gesammelt wurden. Er muss mit dem Umleitungs-URI in der Microsoft Entra ID-App-Registrierung im Azure-Portal übereinstimmen.

    • SCOPES: Bereiche stellen die Berechtigungen dar, die von der Anwendung angefordert wurden. Normalerweise reichen die drei Bereiche openid profile offline_access aus, um eine ID-Token-Antwort zu erhalten.

      Eine vollständige Liste der von der App angeforderten Bereiche finden Sie in der Datei authentication.properties. Sie können weitere Bereiche hinzufügen, Beispiel: User.Read.

  2. Microsoft Entra ID zeigt der*dem Benutzer*in eine Anmeldeeingabeaufforderung an. Wenn der Anmeldeversuch erfolgreich ist, wird der Browser des Benutzers zum Umleitungsendpunkt dieser App umgeleitet. Eine erfolgreiche Anforderung an diesen Endpunkt enthält einen Autorisierungscode.

  3. Die ConfidentialClientApplication-Instanz tauscht diesen Autorisierungscode dann für ein ID-Token und ein Zugriffstoken von Microsoft Entra ID aus.

    // First, validate the state, then parse any error codes in response, then extract the authCode. Then:
    // build the auth code params:
    final AuthorizationCodeParameters authParams = AuthorizationCodeParameters
            .builder(authCode, new URI(Config.REDIRECT_URI)).scopes(Collections.singleton(Config.SCOPES)).build();
    
    // Get a client instance and leverage it to acquire the token:
    final ConfidentialClientApplication client = AuthHelper.getConfidentialClientInstance();
    final IAuthenticationResult result = client.acquireToken(authParams).get();
    

    In der folgenden Liste werden die Features dieses Codes beschrieben:

    • AuthorizationCodeParameters: Diese Parameter müssen festgelegt werden, damit der Autorisierungscode für ein ID- und/oder ein Zugriffstoken ausgetauscht werden kann.
    • authCode: Hierbei handelt es sich um den Autorisierungscode, der am Umleitungsendpunkt empfangen wurde.
    • REDIRECT_URI: Der im vorherigen Schritt verwendete Umleitungs-URI muss noch mal übergeben werden.
    • SCOPES: Die im vorherigen Schritt verwendeten Bereiche müssen noch einmal übergeben werden.
  4. Wenn acquireToken erfolgreich ausgeführt wird, werden die Tokenansprüche extrahiert. Wenn die Nonce-Überprüfung erfolgreich ist, werden die Ergebnisse in context (eine Instanz von IdentityContextData) platziert und in der Sitzung gespeichert. Die Anwendung kann IdentityContextData dann aus der Sitzung (mithilfe einer IdentityContextAdapterServlet-Instanz) instanziieren, wenn sie Zugriff benötigt, wie im folgenden Code gezeigt:

    // parse IdToken claims from the IAuthenticationResult:
    // (the next step - validateNonce - requires parsed claims)
    context.setIdTokenClaims(result.idToken());
    
    // if nonce is invalid, stop immediately! this could be a token replay!
    // if validation fails, throws exception and cancels auth:
    validateNonce(context);
    
    // set user to authenticated:
    context.setAuthResult(result, client.tokenCache().serialize());
    

Schützen der Routen

Informationen dazu, wie die Beispiel-App den Zugriff auf Routen filtert, finden Sie unter AuthenticationFilter.java. In der Datei authentication.properties enthält die Eigenschaft app.protect.authenticated die durch Trennzeichen getrennten Routen, auf die nur authentifizierte Benutzer zugreifen können, wie im folgenden Beispiel gezeigt:

# for example, /token_details requires any user to be signed in and does not require special roles claim(s)
app.protect.authenticated=/token_details

Bereiche

Bereiche teilen Microsoft Entra ID die Zugriffsebene mit, die die Anwendung anfordert.

Auf Grundlage der angeforderten Bereiche zeigt Microsoft Entra ID dem Benutzer bei der Anmeldung ein Einwilligungsdialogfeld an. Wenn der Benutzer in einen oder mehrere Bereiche einwilligt und ein Token erhält, werden die Bereiche in das resultierende access_token codiert.

Die von der Anwendung angeforderten Bereiche finden Sie unter authentication.properties. Diese drei Bereiche werden von MSAL angefordert und standardmäßig von Microsoft Entra ID angegeben.

Weitere Informationen