Uwierzytelnianie przy użyciu SAML w aplikacjach internetowych
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
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.
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.
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";constauth=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";constauth=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:
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() i linkWithPopup(), a następnie ponownie uwierzytelnij użytkownika przy użyciu
reauthenticateWithRedirect() i reauthenticateWithPopup(), które mogą być
służy do pobierania nowych danych logowania na potrzeby operacji poufnych, które wymagają
ostatniego logowania.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-08-30 UTC."],[],[],null,["If you've upgraded to Firebase Authentication with Identity Platform, you can authenticate your users with Firebase\nusing the SAML identity provider of your choice. This makes it possible to use\nyour SAML-based SSO solution to sign users in to your Firebase app.\n\nFirebase Authentication supports only the service-provider initiated SAML flow.\n\nBefore you begin\n\nTo sign in users using a SAML identity provider, you must first collect some\ninformation from the provider:\n\n- **The provider's Entity ID**: A URI that identifies the identity provider.\n- **The provider's SAML SSO URL**: The URL of the identity provider's sign-in page.\n- **The provider's public key certificate**: The certificate used to validate tokens signed by the identity provider.\n- **Your app's Entity ID**: A URI that identifies your app, the \"service provider\".\n\nAfter you have the above information, enable SAML as a sign-in provider for your\nFirebase project:\n\n1. [Add Firebase to your JavaScript project](/docs/web/setup).\n\n2. If you haven't upgraded to Firebase Authentication with Identity Platform, do so. SAML authentication is only\n available in upgraded projects.\n\n3. On the [**Sign-in providers**](//console.firebase.google.com/project/_/authentication/providers)\n page of the Firebase console, click **Add new provider** , and then click\n **SAML**.\n\n4. Give a name to this provider. Note the provider ID that's generated:\n something like `saml.example-provider`. You'll need this ID when you add\n sign-in code to your app.\n\n5. Specify your identity provider's entity ID, SSO URL, and public key\n certificate. Also specify the entity ID of your app (the service provider).\n These values must exactly match the values your provider assigned to you.\n\n6. Save your changes.\n\n7. If you haven't already authorized your app's domain, add it to the allow\n list on the [**Authentication \\\u003e Settings**](//console.firebase.google.com/project/_/authentication/settings)\n page of the Firebase console.\n\nHandle the sign-in flow with the Firebase SDK\n\nTo handle the sign-in flow with the Firebase JavaScript SDK, follow these\nsteps:\n\n1. Create an instance of an `SAMLAuthProvider` using the provider ID you got in\n the Firebase console.\n\n Web \n\n import { SAMLAuthProvider } from \"firebase/auth\";\n\n const provider = new SAMLAuthProvider('saml.example-provider');\n\n Web \n\n var provider = new firebase.auth.SAMLAuthProvider('saml.example-provider');\n ``\n\n\u003c!-- --\u003e\n\n1. Authenticate with Firebase using the SAML provider object.\n\n You can either redirect the user to the provider's sign-in page or open the\n sign-in page in a pop-up browser window.\n\n **Redirect flow**\n\n Redirect to the provider sign-in page by calling `signInWithRedirect()`: \n\n Web \n\n import { getAuth, signInWithRedirect } from \"firebase/auth\";\n\n const auth = getAuth();\n signInWithRedirect(auth, provider);\n\n Web \n\n firebase.auth().signInWithRedirect(provider);\n\n After the user completes sign-in and returns to your app, you can obtain the\n sign-in result by calling `getRedirectResult()`. \n\n Web \n\n import { getAuth, getRedirectResult, SAMLAuthProvider } from \"firebase/auth\";\n\n const auth = getAuth();\n getRedirectResult(auth)\n .then((result) =\u003e {\n // User is signed in.\n\n // Provider data available using getAdditionalUserInfo()\n })\n .catch((error) =\u003e {\n // Handle error.\n });\n\n Web \n\n firebase.auth().getRedirectResult()\n .then((result) =\u003e {\n // User is signed in.\n\n // Provider data available in result.additionalUserInfo.profile,\n // or from the user's ID token obtained from result.user.getIdToken()\n // as an object in the firebase.sign_in_attributes custom claim.\n })\n .catch((error) =\u003e {\n // Handle error.\n });\n\n **Pop-up flow**\n\n Web \n\n import { getAuth, signInWithPopup, OAuthProvider } from \"firebase/auth\";\n\n const auth = getAuth();\n signInWithPopup(auth, provider)\n .then((result) =\u003e {\n // User is signed in.\n\n // Provider data available in result.additionalUserInfo.profile,\n // or from the user's ID token obtained from result.user.getIdToken()\n // as an object in the firebase.sign_in_attributes custom claim.\n })\n .catch((error) =\u003e {\n // Handle error.\n });\n\n Web \n\n firebase.auth().signInWithPopup(provider)\n .then((result) =\u003e {\n // User is signed in.\n\n // Provider data available in result.additionalUserInfo.profile,\n // or from the user's ID token obtained from result.user.getIdToken()\n // as an object in the firebase.sign_in_attributes custom claim.\n })\n .catch((error) =\u003e {\n // Handle error.\n });\n\n The ID token and [UserInfo](/docs/reference/js/auth.userinfo#userinfoemail)\n object contains the user's email address only if it is provided in the\n `NameID` attribute of the SAML assertion from the identity provider: \n\n \u003cSubject\u003e\n \u003cNameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\"\u003etest@email.com\u003c/NameID\u003e\n \u003c/Subject\u003e\n\n2. While the above examples focus on sign-in flows, you can use the same\n pattern to link a SAML provider to an existing user using\n `linkWithRedirect()` and `linkWithPopup()`, and re-authenticate a user with\n `reauthenticateWithRedirect()` and `reauthenticateWithPopup()`, which can be\n used to retrieve fresh credentials for sensitive operations that require\n recent login."]]