Po przejściu na Firebase Authentication with Identity Platform możesz uwierzytelniać użytkowników za pomocą Firebase. przy użyciu wybranego dostawcy tożsamości SAML. Dzięki temu można używać rozwiązanie logowania jednokrotnego opartego na SAML do logowania użytkowników w aplikacji Firebase.
Firebase Authentication obsługuje tylko przepływ SAML inicjowany przez dostawcę usługi.
Zanim zaczniesz
Aby zalogować użytkowników przy użyciu dostawcy tożsamości SAML, musisz najpierw zebrać niektóre informacje od dostawcy:
- Identyfikator jednostki dostawcy: identyfikator URI dostawcy tożsamości.
- Adres URL logowania jednokrotnego przez SAML dostawcy: adres URL logowania dostawcy tożsamości. stronę.
- Certyfikat klucza publicznego dostawcy: certyfikat używany do weryfikacji. tokeny podpisane przez dostawcę tożsamości.
- Identyfikator jednostki aplikacji: identyfikator URI, który identyfikuje aplikację – „usługę” dostawcy”.
Po otrzymaniu tych informacji włącz SAML jako dostawcę logowania dla Projekt Firebase:
Jeśli nie korzystasz jeszcze z wersji Firebase Authentication with Identity Platform, zrób to. Uwierzytelnianie SAML dostępne w uaktualnionych projektach.
Na stronie Dostawcy logowania. w konsoli Firebase, kliknij Dodaj nowego dostawcę i wybierz SAML.
Nazwij tego dostawcę. Zanotuj wygenerowany identyfikator dostawcy: np.
saml.example-provider
. Ten identyfikator będzie potrzebny podczas dodawania kod logowania do aplikacji.Podaj identyfikator jednostki dostawcy tożsamości, adres URL logowania jednokrotnego i klucz publiczny certyfikat. Podaj też identyfikator jednostki aplikacji (dostawcy usług). Te wartości muszą dokładnie odpowiadać wartościom przypisanym przez dostawcę.
Zapisz zmiany.
Jeśli domena aplikacji nie została jeszcze autoryzowana, dodaj ją do zezwolenia na liście Uwierzytelnianie > Ustawienia stronie konsoli Firebase.
Zarejestruj się za pomocą pakietu SDK Firebase
Aby zalogować się za pomocą pakietu SDK Firebase JavaScript, postępuj zgodnie z tymi wskazówkami kroki:
Utwórz instancję
SAMLAuthProvider
, używając otrzymanego identyfikatora dostawcy w konsoli Firebase.Web
import { SAMLAuthProvider } from "firebase/auth"; const provider = new SAMLAuthProvider('saml.example-provider');
Web
var provider = new firebase.auth.SAMLAuthProvider('saml.example-provider'); ``
Uwierzytelniaj w Firebase za pomocą obiektu dostawcy SAML.
Możesz przekierować użytkownika na stronę logowania dostawcy lub otworzyć stronie logowania w wyskakującym okienku przeglądarki.
Proces przekierowania
Przekieruj na stronę logowania dostawcy, dzwoniąc pod numer
signInWithRedirect()
:Web
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Web
firebase.auth().signInWithRedirect(provider);
Gdy użytkownik się zaloguje i wróci do aplikacji, możesz uzyskać wyniku logowania, dzwoniąc pod numer
getRedirectResult()
.Web
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
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ąca instrukcja
Web
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
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. });
Token identyfikatora i element UserInfo zawiera adres e-mail użytkownika tylko wtedy, gdy został podany w Atrybut
NameID
potwierdzenia SAML od dostawcy tożsamości:<Subject> <NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">test@email.com</NameID> </Subject>
Powyższe przykłady dotyczą procesu logowania, ale możesz użyć tego samego wzorzec łączenia dostawcy SAML z istniejącym użytkownikiem za pomocą
linkWithRedirect()
ilinkWithPopup()
, a następnie ponownie uwierzytelnij użytkownika przy użyciureauthenticateWithRedirect()
ireauthenticateWithPopup()
, które mogą być służy do pobierania nowych danych logowania na potrzeby operacji poufnych, które wymagają ostatniego logowania.