Nutzer mit Microsoft anmelden

In diesem Dokument erfahren Sie, wie Sie Nutzer mit Identity Platform bei Microsoft anmelden. Es werden sowohl persönliche Microsoft-Konten als auch Azure Active Directory-Konten (Azure AD) unterstützt.

Hinweis

In dieser Anleitung wird davon ausgegangen, dass Sie Identity Platform bereits aktiviert und eine einfache Webanwendung erstellt haben, die mit HTML und JavaScript geschrieben wurde. Weitere Informationen dazu finden Sie in der Kurzanleitung.

Microsoft als Anbieter konfigurieren

So konfigurieren Sie Microsoft als Identitätsanbieter:

  1. Rufen Sie in der Cloud Console die Seite Identitätsanbieter auf.

    Zur Seite "Identitätsanbieter"

  2. Klicken Sie auf Anbieter hinzufügen.

  3. Wählen Sie Microsoft aus der Liste aus.

  4. Geben Sie die App-ID und das App-Secret für Microsoft ein. Wenn Sie noch keine ID und kein Secret haben, führen Sie die Schritte unter Kurzanleitung: Anwendung mit dem Azure AD v2.0-Endpunkt registrieren aus, um eine zu erhalten.

    Dieser Endpunkt unterstützt sowohl private Microsoft- als auch Azure AD-Konten. Weitere Informationen zu Azure AD finden sich in der Übersicht über die Microsoft-Identitätsplattform (Version 2.0).

  5. Konfigurieren Sie den unter Microsoft konfigurieren aufgeführten URI als gültigen OAuth-Weiterleitungs-URI für Ihre Anwendung.

  6. Klicken Sie unter Autorisierte Domains auf Domain hinzufügen, um die Domains Ihrer Anwendung zu registrieren. Für Entwicklungszwecke ist localhost bereits standardmäßig aktiviert.

  7. Klicken Sie unter Anwendung konfigurieren auf Einrichtungsdetails. Kopieren Sie das Snippet in den Code Ihrer Anwendung, um das Identity Platform Client SDK zu initialisieren.

  8. Klicken Sie auf Speichern.

Nutzer mit dem Client SDK anmelden

  1. Erstellen Sie eine Instanz des Objekts OAuthProvider und übergeben Sie microsoft.com als Anbieter-ID:

    JavaScript

    var provider = new firebase.auth.OAuthProvider('microsoft.com');

  2. Optional: Fügen Sie OAuth-Bereiche hinzu. Die Bereiche legen fest, welche Daten Sie von Microsoft anfordern. Für sensiblere Daten sind möglicherweise spezielle Bereiche erforderlich. Informationen dazu, welche Bereiche Ihre Anwendung benötigt, finden Sie in der Dokumentation von Microsoft.

    JavaScript

    provider.addScope('mail.read');
    provider.addScope('calendars.read');
    
  3. Optional: Geben Sie zusätzliche benutzerdefinierte OAuth-Parameter an. Sie gelten speziell für Microsoft und werden meist verwendet, um das Authentifizierungserlebnis anzupassen.

    JavaScript

    provider.setCustomParameters({
      // Force re-consent.
      prompt: 'consent',
      // Target specific email with login hint.
      login_hint: 'user@firstadd.onmicrosoft.com'
    });
    

    Mit dem Parameter mkt können Sie die Sprache des Authentifizierungsablaufs anpassen. Beispiel:

    provider.setCustomParameters({
      mkt: 'fr'
    });
    

    Mit dem Attribut tenant können Sie den Zugriff auf Nutzer außerhalb einer bestimmten Azure AD-Domain beschränken. Geben Sie entweder den Anzeigenamen der Mandanten oder seine GUID-Kennung an. Nutzer, die sich nicht in dieser Domain befinden, können sich nicht anmelden. Beispiel:

    provider.setCustomParameters({
      // Optional "tenant" parameter in case you are using an Azure AD tenant.
      // eg. '8eaef023-2b34-4da1-9baa-8bc8c9d6a490' or 'contoso.onmicrosoft.com'
      // or "common" for tenant-independent tokens.
      // The default value is "common".
      tenant: 'TENANT_ID'
    });
    

    Eine vollständige Liste der Parameter, die Microsoft unterstützt, finden Sie in der Microsoft-OAuth-Dokumentation. Beachten Sie, dass Sie keine von OAuth oder Identity Platform reservierten Parameter übergeben können.

  4. Verwenden Sie das Objekt OAuthProvider, um den Nutzer anzumelden. Sie können entweder ein Pop-up-Fenster öffnen oder die aktuelle Seite weiterleiten. Für Nutzer von Mobilgeräten ist die Weiterleitung einfacher.

    Rufen Sie signInWithPopup() auf, um ein Pop-up-Fenster einzublenden:

    JavaScript

    firebase.auth().signInWithPopup(provider)
      .then((result) => {
        // IdP data available in result.additionalUserInfo.profile.
        // ...
    
        /** @type {firebase.auth.OAuthCredential} */
        var credential = result.credential;
    
        // OAuth access and id tokens can also be retrieved:
        var accessToken = credential.accessToken;
        var idToken = credential.idToken;
      })
      .catch((error) => {
        // Handle error.
      });

    Rufen Sie zum Weiterleiten der Seite zuerst signInWithRedirect() auf:

    JavaScript

    firebase.auth().signInWithRedirect(provider);

    Rufen Sie dann das Microsoft-Token beim Laden der Seite ab. Dazu rufen Sie getRedirectResult() auf:

    JavaScript

    firebase.auth().getRedirectResult()
      .then((result) => {
        // IdP data available in result.additionalUserInfo.profile.
        // ...
    
        /** @type {firebase.auth.OAuthCredential} */
        var credential = result.credential;
    
        // OAuth access and id tokens can also be retrieved:
        var accessToken = credential.accessToken;
        var idToken = credential.idToken;
      })
      .catch((error) => {
        // Handle error.
      });

Sobald Sie ein Zugriffstoken haben, können Sie damit die Microsoft Graph API aufrufen. Zum Beispiel:

REST

curl -i -H "Authorization: Bearer [ACCESS_TOKEN]" https://graph.microsoft.com/v1.0/me

Anders als andere von Identity Platform unterstützte Anbieter stellt Microsoft keine Foto-URL für Nutzer bereit. Stattdessen müssen Sie die Graph API verwenden, um Binärdaten für das Foto anzufordern.

Neben dem Zugriffstoken können Sie auch das Microsoft ID-Token eines Nutzers abrufen. Die Anforderung oid für dieses Token enthält eine eindeutige ID für den Nutzer. Sie können diese mit der ID unter user.providerData[0].uid vergleichen. Wenn sich Ihre Nutzer mit einem Azure AD-Mandanten anmelden, stimmen diese Felder genau überein. Ist dies nicht der Fall, wird das Feld mit Nullen aufgefüllt. Die föderierte ID 4b2eabcdefghijkl wird beispielsweise als 00000000-0000-0000-4b2e-abcdefghijkl angezeigt.

Verwenden Sie die sub-Anforderung nicht zum Vergleichen von Nutzer-IDs. Die Anforderung sub ist anwendungsspezifisch und stimmt nicht mit der von Microsoft verwendeten ID überein.

Nutzer manuell anmelden

Bei einigen anderen Identity Platform-Anbietern wie Google, Facebook und Twitter können Sie Nutzer manuell durch Aufrufen von signInWithCredential() anmelden.

Diese Funktion wird für Microsoft nicht unterstützt. Identity Platform kann die Zielgruppe von Microsoft OAuth-Zugriffstoken nicht überprüfen. Dies ist eine wichtige Sicherheitsanforderung.

Wenn Sie Nutzer nicht mit dem Identity Platform-Client-SDK anmelden können, müssen Sie eine OAuth-Bibliothek eines Drittanbieters für die Authentifizierung bei Microsoft verwenden. Anschließend können Sie die benutzerdefinierte Authentifizierung verwenden, um die Microsoft-Anmeldedaten gegen ein benutzerdefiniertes Token auszutauschen.

Nächste Schritte