Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Nutzer mit SAML anmelden

In diesem Artikel erfahren Sie, wie Sie Nutzer mit Identity Platform bei einem SAML-Anbieter (Security Assertion Markup Language) 2.0 anmelden.

Hinweis

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  4. Aktivieren Sie Identity Platform und fügen Sie das Client SDK zu Ihrer Anwendung hinzu. Weitere Informationen finden Sie in der Kurzanleitung.

Anbieter konfigurieren

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

  2. Klicken Sie auf Anbieter hinzufügen und wählen Sie SAML aus der Liste aus.

  3. Geben Sie die folgenden Informationen ein:

    1. Name des Anbieters. Dieser kann die Anbieter-ID oder ein benutzerdefinierter Name sein. Wenn Sie einen benutzerdefinierten Namen eingeben, klicken Sie neben Anbieter-ID auf Bearbeiten, um die ID anzugeben. Diese muss mit saml. beginnen.

    2. Die Entitäts-ID des Anbieters.

    3. Die SAML-SSO-URL des Anbieters.

    4. Das Zertifikat, das für die Tokensignatur beim Anbieter verwendet wird. Achten Sie darauf, die Start- und Endstrings anzugeben. Beispiel:

      -----BEGIN CERTIFICATE-----
      MIICajCCAdOgAwIBAgIBADANBgkqhkiG9w0BAQ0FADBSMQswCQYDVQQGEwJ1czEL
      ...
      LEzc1JwEGQQVDYQCwsQMSBDAF0QAB0w9GikhqkgBNADABIgABIwAgOdACCjaCIIM
      -----END CERTIFICATE-----
      
  4. Geben Sie unter Dienstanbieter die Entitäts-ID Ihrer Anwendung ein. Das ist in der Regel die URL Ihrer Anwendung. Bei Ihrem SAML-Identitätsanbieter wird dies als Zielgruppe bezeichnet.

  5. Fügen Sie Ihre Anwendung zur Liste der autorisierten Domains hinzu. Wenn die Anmelde-URL Ihrer Anwendung beispielsweise https://example.com/login lautet, fügen Sie example.com hinzu.

  6. Passen Sie gegebenenfalls die Callback-URL für Ihre Anwendung an. Die URL wird in der Regel von SAML-Identitätsanbietern für die ACS-URL (Assertion Consumer Service) verwendet.

    Die Verwendung der Standard-Callback-URL vereinfacht die Validierung der SAML-Antwort. Wenn Sie diesen Ablauf anpassen, achten Sie darauf, dass die Callback-URL des Identity Platform-Projekts für Ihr Projekt in Ihrem SAML-Identitätsanbieter konfiguriert ist. Das sieht normalerweise so aus: https://<authDomain>/__/auth/handler. Weitere Informationen finden Sie unter Authentifizierungs-Handler anpassen.

  7. Klicken Sie auf Speichern.

Signieranfragen

Sie können die Sicherheit Ihrer Authentifizierungsanfragen erhöhen, indem Sie sie signieren.

Wenn Sie Anfragen signieren möchten, müssen Sie zuerst signierte Anfragen für Ihren Identitätsanbieter aktivieren. Rufen Sie dazu inboundSamlConfigs.patch() auf und legen Sie idp_config.sign_request auf true fest:

REST

HTTP-Methode und URL:

PATCH https://identitytoolkit.googleapis.com/admin/v2/projects/project-id/inboundSamlConfigs/provider-id?updateMask=idpConfig.signRequest

JSON-Text anfordern:

{
  "idp_config": {
    "sign_request": true
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

 

Sie müssen die REST API verwenden, um signierte Anfragen zu aktivieren; die Cloud Console oder das gcloud-Befehlszeilentool werden nicht unterstützt.

Die Antwort ist ein InboundSamlConfig-Objekt, das ein Array von SpCertificate enthält. Konfigurieren Sie den Wert des X509-Zertifikats mit Ihrem SAML-Identitätsanbieter, um die Signatur Ihrer Anfragen zu prüfen.

Nutzer anmelden

Wenn Sie einen Nutzer anmelden, verarbeitet das Client SDK die Authentifizierungsfehler und gibt dann ID-Tokens zurück, die die SAML-Attribute in ihren Nutzlasten enthalten. So melden Sie einen Nutzer an und rufen Attribute vom SAML-Anbieter ab:

  1. Erstellen Sie eine SAMLAuthProvider-Instanz mit der Anbieter-ID, die Sie im vorherigen Abschnitt konfiguriert haben. Die Anbieter-ID muss mit saml. beginnen.

    const provider = new firebase.auth.SAMLAuthProvider('saml.myProvider');
    
  2. Starten Sie den Anmeldevorgang. Sie können entweder ein Pop-up-Fenster oder eine Weiterleitung verwenden.

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

    firebase.auth().signInWithPopup(provider)
      .then((result) => {
        // User is signed in.
        // Identity provider data available in result.additionalUserInfo.profile,
        // or from the user's ID token obtained from result.user.getIdToken()
        // as an object in the firebase.sign_in_attributes custom claim
        // This is also available from result.user.getIdTokenResult()
        // idTokenResult.claims.firebase.sign_in_attributes.
      })
      .catch((error) => {
        // Handle error.
      });
    

    Weiterleitung

    Rufen Sie signInWithRedirect() auf, um auf eine Anmeldeseite weiterzuleiten:

    firebase.auth().signInWithRedirect(provider);
    

    Rufen Sie dann getRedirectResult() auf, um die Ergebnisse abzurufen, wenn der Nutzer zu Ihrer Anwendung zurückgeleitet wird:

    firebase.auth().getRedirectResult()
      .then((result) => {
        // User is signed in.
        // Provider data available in result.additionalUserInfo.profile,
        // or from the user's ID token obtained from result.user.getIdToken()
        // as an object in the firebase.sign_in_attributes custom claim
        // This is also available from result.user.getIdTokenResult()
        // idTokenResult.claims.firebase.sign_in_attributes.
      }).catch((error) => {
        // Handle error.
      });
    
  3. Rufen Sie mithilfe der Anforderung firebase.sign_in_attributes die Nutzerattribute, die dem SAML-Anbieter zugeordnet sind, aus dem ID-Token ab. Prüfen Sie das ID-Token mit dem Admin SDK, wenn Sie es an Ihren Server senden.

Derzeit werden nur vom Dienstanbieter initiierte SAML-Abläufe aus dem Client SDK unterstützt.

Nutzerkonten verknüpfen

Wenn sich ein Nutzer bereits mit einer anderen Methode (z. B. E-Mail/Passwort) in Ihrer Anwendung angemeldet hat, können Sie sein vorhandenes Konto über linkWithPopup() oder linkWithRedirect() mit dem SAML-Anbieter verknüpfen. Beispiel:

const provider = new firebase.auth.SAMLAuthProvider('saml.myProvider');

// Link with a popup.
firebase.auth().currentUser.linkWithPopup(provider)
    // currentUser.providerData now has an additional entry for this provider.
  }).catch((error) => {
    // Handle error.
  });

Nutzer neu authentifizieren

Bei bestimmten vertraulichen Vorgängen, wie der Aktualisierung der E-Mail-Adresse oder des Passworts eines Nutzers, muss der Nutzer kürzlich angemeldet sein. Wenn Sie einen Nutzer noch einmal anmelden möchten, rufen Sie reauthenticateWithPopup() oder reauthenticateWithRedirect() auf. Beispiel:

const provider = new firebase.auth.SAMLAuthProvider('saml.myProvider');

// Reauthenticate with a popup.
firebase.auth().currentUser.reauthenticateWithPopup(provider)
  .then((result) => {
    // Get the updated ID token.
    return result.user.getIdTokenResult();
  })
  .then((idTokenResult) => {
    // idTokenResult.authTime should be updated to reflect recent sign-in status.
    // idTokenResult.token has the latest ID token.
  })
  .catch((error) => {
    // Handle error.
  });

Nächste Schritte