Anmelden von Benutzern mit der Microsoft-Authentifizierungsbibliothek

Abgeschlossen

Sie haben Ihre Webanwendung bei Microsoft Entra ID registriert. Sie können nun den Authentifizierungscode für die Anmeldung von Benutzer*innen bei Ihrer Anwendung hinzufügen. Dabei verwenden Sie ein SDK, das die Authentifizierungsdetails für Sie verarbeiten kann. In dieser Lerneinheit erfahren Sie mehr über die Microsoft-Authentifizierungsbibliothek für Java (Microsoft Authentication Library for Java, MSAL4J) und wie diese bei der Authentifizierung hilft.

Microsoft-Authentifizierungsbibliothek für Java

Die Microsoft-Authentifizierungsbibliothek für Java (MSAL4J) ermöglicht Anwendungen das Anmelden von Benutzer*innen oder Apps mit Microsoft-Identitäten (Microsoft Entra ID, Microsoft- und Azure Active Directory B2C-Konten) und das Abrufen von Token zum Aufrufen von Microsoft-APIs oder Ihrer eigenen bei Microsoft Entra ID registrierten APIs. Sie wurde mithilfe der Protokolle „OAuth2“ und „OpenID Connect“ erstellt, die den Branchenstandard darstellen.

Die Bibliothek bietet praktische APIs, die die Authentifizierung bei Microsoft Entra ID für verschiedene Arten von Anwendungen ermöglichen:

  • Webanwendungen
  • Daemon-Dienste
  • Befehlszeilenanwendungen
  • Desktopanwendungen

Initialisieren des MSAL-Objekts

Damit Sie MSAL verwenden können, müssen Sie das MSAL-Objekt in Ihrem Anwendungscode initialisieren und konfigurieren.

MSAL stellt Clientanwendungen als öffentliche Clients und vertrauliche Clients dar, die sich durch ihre Fähigkeit zur sicheren Authentifizierung beim Autorisierungsserver und die Vertraulichkeit ihrer Clientanmeldeinformationen unterscheiden.

Vertrauliche Clientanwendungen sind Apps, die auf Servern ausgeführt werden (Web-Apps, Web-API-Apps oder sogar Dienst-/Daemon-Apps). Vertrauliche Clients können Anwendungsgeheimnisse zur Konfigurationszeit speichern.

Sie können eine Instanz des vertraulichen Clients wie folgt erstellen:

IClientCredential credential = ClientCredentialFactory.createFromSecret(CLIENT_SECRET);
ConfidentialClientApplication app = ConfidentialClientApplication
                                        .builder(CLIENT_ID, credential)
                                        .authority(AUTHORITY)
                                        .build();
  • CLIENT_ID: Die Client-ID ist die eindeutige (Client-)ID der Anwendung, die Ihrer App bei ihrer Registrierung von Microsoft Entra ID zugewiesen wurde.
  • CLIENT_SECRET: Hierbei handelt es sich um den geheimen Clientschlüssel für die vertrauliche Client-App, die beim Registrieren der App erstellt wurde.
  • AUTHORITY: Die Zertifizierungsstelle ist eine URL, die ein Verzeichnis angibt, aus dem eine Microsoft-Authentifizierungsbibliothek Tokens anfordern kann. Sie besteht aus der Identitätsanbieterinstanz und der Zielgruppe für die Anmeldung für die App.

Abrufen von Authentifizierungstoken mit MSAL

Die Microsoft-Authentifizierungsbibliothek stellt acquireToken-Methoden zum Initiieren des Authentifizierungsablaufs bereit und gibt ein AuthenticationResult-Objekt zurück, das die Authentifizierungstokens enthält.

Wenn ein*e Benutzer*in die Anmeldung abschließt, wird ein ID-Token im Authentifizierungsergebnis zurückgegeben, das einige Standardauthentifizierungsansprüche wie den Benutzerprinzipalnamen, die E-Mail-Adresse usw. enthält.

Hier finden Sie ein Beispiel für das Abrufen von Token mit der Microsoft-Authentifizierungsbibliothek (Microsoft Authentication Library, MSAL):

final AuthorizationCodeParameters authParams = AuthorizationCodeParameters
                                                    .builder(authCode, new URI(Config.REDIRECT_URI)).scopes(Collections.singleton(Config.SCOPES))
                                                    .build();

final IAuthenticationResult result = app.acquireToken(authParams).get();
  • REDIRECT_URI: Der Umleitungs-URI ist der URI, an den der Identitätsanbieter die Sicherheitstoken zurücksendet. Sie muss mit dem Umleitungs-URI in der Microsoft Entra-App-Registrierung übereinstimmen.
  • SCOPES: Bereiche stellen die Berechtigungen dar, die von der Anwendung angefordert wurden. Normalerweise genügen die drei Bereiche openid profile offline_access zum Abrufen einer ID-Tokenantwort für eine Benutzeranmeldung. Diese Bereiche werden standardmäßig von der Microsoft-Authentifizierungsbibliothek festgelegt.

Verwenden Sie die acquireToken-Methoden in Ihrer Anwendung, wenn Sie einen Anmeldefluss für Benutzer*innen initiieren und APIs aufrufen, um auf Daten zuzugreifen.