Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Uwierzytelnianie za pomocą SAML w aplikacjach internetowych

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Jeśli korzystasz z uwierzytelniania Firebase za pomocą Identity Platform, możesz uwierzytelniać swoich użytkowników w Firebase, korzystając z wybranego dostawcy tożsamości SAML. Dzięki temu możesz używać rozwiązania logowania jednokrotnego opartego na SAML do logowania użytkowników w aplikacji Firebase.

Uwierzytelnianie Firebase obsługuje tylko przepływ SAML zainicjowany przez dostawcę usług.

Zanim zaczniesz

Aby logować użytkowników przy użyciu dostawcy tożsamości SAML, musisz najpierw zebrać od niego pewne informacje:

  • Identyfikator jednostki dostawcy : identyfikator URI identyfikujący dostawcę tożsamości.
  • Adres URL logowania jednokrotnego SAML dostawcy : adres URL strony logowania dostawcy tożsamości.
  • Certyfikat klucza publicznego dostawcy : certyfikat używany do sprawdzania poprawności tokenów podpisanych przez dostawcę tożsamości.
  • Identyfikator jednostki Twojej aplikacji : identyfikator URI, który identyfikuje Twoją aplikację, czyli „dostawcę usług”.

Po uzyskaniu powyższych informacji włącz SAML jako dostawcę logowania w swoim projekcie Firebase:

  1. Dodaj Firebase do swojego projektu JavaScript .

  2. Jeśli nie uaktualniono do Uwierzytelniania Firebase za pomocą Identity Platform, zrób to. Uwierzytelnianie SAML jest dostępne tylko w uaktualnionych projektach.

  3. Na stronie Dostawcy logowania w konsoli Firebase kliknij Dodaj nowego dostawcę , a następnie kliknij SAML .

  4. Podaj nazwę temu dostawcy. Zanotuj wygenerowany identyfikator dostawcy: coś w rodzaju saml.example-provider . Będziesz potrzebować tego identyfikatora, gdy dodasz kod logowania do swojej aplikacji.

  5. Podaj identyfikator jednostki dostawcy tożsamości, adres URL logowania jednokrotnego i certyfikat klucza publicznego. Określ również identyfikator jednostki swojej aplikacji (dostawcę usług). Te wartości muszą dokładnie odpowiadać wartościom, które przypisał Ci Twój dostawca.

  6. Zapisz zmiany.

  7. Jeśli domena aplikacji nie została jeszcze autoryzowana, dodaj ją do listy dozwolonych na stronie Uwierzytelnianie > Ustawienia w konsoli Firebase.

Obsługuj proces logowania za pomocą pakietu Firebase SDK

Aby obsłużyć proces logowania za pomocą pakietu Firebase JavaScript SDK, wykonaj te czynności:

  1. Utwórz wystąpienie SAMLAuthProvider przy użyciu identyfikatora dostawcy otrzymanego w konsoli Firebase.

    Web version 9

    import { SAMLAuthProvider } from "firebase/auth";
    
    const provider = new SAMLAuthProvider('saml.example-provider');
    

    Web version 8

    var provider = new firebase.auth.SAMLAuthProvider('saml.example-provider');
    ``
    
  1. Uwierzytelnij się w Firebase przy użyciu obiektu dostawcy SAML.

    Możesz przekierować użytkownika do strony logowania dostawcy lub otworzyć stronę logowania w wyskakującym oknie przeglądarki.

    Przekieruj przepływ

    Przekieruj do strony logowania dostawcy, wywołując signInWithRedirect() :

    Web version 9

    import { getAuth, signInWithRedirect } from "firebase/auth";
    
    const auth = getAuth();
    signInWithRedirect(auth, provider);
    

    Web version 8

    firebase.auth().signInWithRedirect(provider);
    

    Gdy użytkownik zakończy logowanie i wróci do aplikacji, możesz uzyskać wynik logowania, wywołując getRedirectResult() .

    Web version 9

    import { getAuth, getRedirectResult, SAMLAuthProvider } from "firebase/auth";
    
    const auth = getAuth();
    getRedirectResult(auth)
      .then((result) => {
        // User is signed in.
    
        // Provider data available using getAdditionalUserInfo()
      })
      .catch((error) => {
        // Handle error.
      });
    

    Web version 8

    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.
      })
      .catch((error) => {
        // Handle error.
      });
    

    Wyskakujący przepływ

    Web version 9

    import { getAuth, signInWithPopup, OAuthProvider } from "firebase/auth";
    
    const auth = getAuth();
    signInWithPopup(auth, provider)
      .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.
      })
      .catch((error) => {
        // Handle error.
      });
    

    Web version 8

    firebase.auth().signInWithPopup(provider)
      .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.
      })
      .catch((error) => {
        // Handle error.
      });
    
  2. Chociaż powyższe przykłady koncentrują się na przepływach logowania, możesz użyć tego samego wzorca, aby połączyć dostawcę SAML z istniejącym użytkownikiem za pomocą linkWithRedirect() i linkWithPopup() i ponownie uwierzytelnić użytkownika za pomocą reauthenticateWithRedirect( reauthenticateWithRedirect() i reauthenticateWithPopup( reauthenticateWithPopup() , które mogą służyć do pobierania nowych poświadczeń dla poufnych operacji, które wymagają niedawnego logowania.