المصادقة باستخدام SAML في تطبيقات الويب
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
في حال الترقية إلى Firebase Authentication with Identity Platform، يمكنك مصادقة المستخدمين من خلال Firebase.
باستخدام موفِّر هوية SAML الذي تختاره. هذا يجعل من الممكن استخدام
خدمة الدخول المُوحَّد (SSO) المستنِدة إلى SAML لتسجيل دخول المستخدمين إلى تطبيقك في Firebase.
يتوافق "Firebase Authentication" فقط مع مسار SAML الذي بدأه مقدِّم الخدمة.
قبل البدء
لتسجيل دخول المستخدمين باستخدام موفِّر هوية SAML، يجب أولاً جمع بعض
المعلومات من المزود:
- رقم تعريف كيان الموفِّر: معرّف موارد منتظم (URI) يُحدِّد موفِّر الهوية.
- عنوان URL للدخول المُوحَّد (SSO) عبر SAML للموفِّر: عنوان URL لتسجيل دخول موفِّر الهوية
.
- شهادة المفتاح العام للموفر: الشهادة المستخدمة للتحقق من صحة
رموز مميزة موقعة من قبل موفر الهوية.
- رقم تعريف كيان تطبيقك: هو معرّف موارد منتظم (URI) يحدّد تطبيقك أو "الخدمة
".
بعد حصولك على المعلومات أعلاه، يمكنك تفعيل SAML كموفِّر تسجيل دخول
مشروع Firebase:
أضِف Firebase إلى مشروع JavaScript.
في حال عدم الترقية إلى Firebase Authentication with Identity Platform، يُرجى إجراء ذلك. تتم مصادقة SAML فقط
متاحة في المشروعات التي تمت ترقيتها.
على مقدّمي الخدمات الذين يسجّلون الدخول
في وحدة تحكم Firebase، وانقر على إضافة موفِّر جديد، ثم انقر على
SAML.
يُرجى تسمية مقدّم الخدمة هذا. دوِّن رقم تعريف موفّر الخدمة الذي يتم إنشاؤه:
شيء مثل saml.example-provider
. ستحتاج إلى رقم التعريف هذا عند إضافة
رمز تسجيل الدخول إلى تطبيقك.
تحديد رقم تعريف كيان موفِّر الهوية وعنوان URL للدخول المُوحَّد (SSO) والمفتاح العام
الشهادة. حدِّد أيضًا رقم تعريف الكيان لتطبيقك (مقدِّم الخدمة).
يجب أن تتطابق هذه القيم تمامًا مع القيم التي عيّنها لك مزوّد الخدمة.
احفظ التغييرات.
إذا لم يسبق لك تفويض نطاق تطبيقك، أضِفه إلى نطاق السماح.
في قائمة المصادقة > الإعدادات
في وحدة التحكم Firebase.
معالجة عملية تسجيل الدخول باستخدام حزمة تطوير البرامج (SDK) لمنصّة Firebase
لمعالجة عملية تسجيل الدخول باستخدام حزمة تطوير البرامج (SDK) لJavaScript لمنصّة Firebase، اتّبِع الخطوات التالية:
الخطوات:
إنشاء نسخة افتراضية من SAMLAuthProvider
باستخدام رقم تعريف الموفّر الذي حصلت عليه
وحدة تحكم Firebase.
Web
import { SAMLAuthProvider } from "firebase/auth";
const provider = new SAMLAuthProvider('saml.example-provider');
Web
var provider = new firebase.auth.SAMLAuthProvider('saml.example-provider');
``
يمكنك المصادقة مع Firebase باستخدام كائن موفّر SAML.
يمكنك إعادة توجيه المستخدم إلى صفحة تسجيل الدخول الخاصة بمقدّم الخدمة أو فتح
صفحة تسجيل الدخول في نافذة متصفح منبثقة.
مسار إعادة التوجيه
إعادة التوجيه إلى صفحة تسجيل الدخول إلى مقدّم الخدمة من خلال الاتصال على الرقم signInWithRedirect()
:
Web
import { getAuth, signInWithRedirect } from "firebase/auth";
const auth = getAuth();
signInWithRedirect(auth, provider);
Web
firebase.auth().signInWithRedirect(provider);
بعد أن يكمل المستخدم عملية تسجيل الدخول ثم يعود إلى تطبيقك، يمكنك الحصول على
نتيجة تسجيل الدخول من خلال الاتصال على 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.
});
مسار النافذة المنبثقة
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.
});
الرمز المميّز للمعرّف وUserInfo
على عنوان البريد الإلكتروني للمستخدم فقط إذا تم تقديمه في
السمة NameID
لتأكيد SAML من موفِّر الهوية:
<Subject>
<NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">test@email.com</NameID>
</Subject>
بينما تركز الأمثلة أعلاه على تدفقات تسجيل الدخول، يمكنك استخدام نفس
لربط موفِّر SAML بمستخدِم حالي باستخدام
linkWithRedirect()
وlinkWithPopup()
، وإعادة مصادقة مستخدم باستخدام
reauthenticateWithRedirect()
وreauthenticateWithPopup()
، اللذين يمكن أن يكونا
تُستخدم لاسترداد بيانات اعتماد جديدة للعمليات الحساسة التي تتطلب
تسجيل دخول حديث.
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2025-08-08 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-08-08 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Authenticate Using SAML in web apps\n\nIf 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----------------\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---------------------------------------------\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."]]