اگر به Firebase Authentication with Identity Platform ارتقا دادهاید، میتوانید کاربران خود را بااستفاده از ارائهدهنده هویت SAML انتخابیتان با Firebase اصالتسنجی کنید. این کار امکان استفاده از راهحل SAML-based SSO برای ورود کاربران به برنامه Firebase شما را فراهم میکند.
Firebase Authentication فقط از جریان SAML آغازشده توسط ارائهدهنده خدمات پشتیبانی میکند.
قبل از شروع
برای ورود به سیستم کاربران بااستفاده از ارائهدهنده هویت SAML، ابتدا باید اطلاعاتی را از ارائهدهنده جمعآوری کنید:
- شناسه نهاد ارائهدهنده: یک نشانی وب که ارائهدهنده هویت را شناسایی میکند.
- نشانی وب SAML SSO ارائهدهنده: نشانی وب صفحه ورود به سیستم ارائهدهنده هویت.
- گواهینامه کلید عمومی ارائهدهنده: گواهینامهای که برای تأیید کردن نشانهای امضاشده توسط ارائهدهنده هویت استفاده میشود.
- شناسه نهاد برنامه شما: یک نشانی وب که برنامه شما، «ارائهدهنده سرویس»، را شناسایی میکند.
پساز اینکه اطلاعات بالا را داشتید، SAML را بهعنوان ارائهدهنده ورود به سیستم برای پروژه Firebase خود فعال کنید:
اگر قبلاً این کار را نکردهاید، مطمئن شوید که پروژهتان به Firebase Authentication with Identity Platform ارتقا یافته است. اصالتسنجی SAML فقط در پروژههای ارتقایافته دردسترس است.
در کنسول Firebase، به امنیت > اصالتسنجی بروید.
در برگه روش ورود به سیستم، روی افزودن ارائهدهنده جدید کلیک کنید، و سپس روی SAML کلیک کنید.
نامی برای این ارائهدهنده انتخاب کنید. شناسه ارائهدهنده تولیدشده را یادداشت کنید: چیزی شبیه
saml.example-provider. وقتی کد ورود به سیستم را به برنامهتان اضافه میکنید به این شناسه نیاز خواهید داشت.شناسه نهاد، نشانی وب SSO، و گواهینامه کلید عمومی ارائهدهنده هویت خود را مشخص کنید. همچنین شناسه نهاد برنامهتان (ارائهدهنده سرویس) را مشخص کنید. این مقادیر باید دقیقاً با مقادیری که ارائهدهنده به شما اختصاص داده است مطابقت داشته باشد.
تغییرات خود را ذخیره کنید.
اگر قبلاً این کار را نکردهاید، دامنه برنامهتان را مجاز کنید:
در کنسول Firebase، به امنیت > اصالتسنجی > زبانه تنظیمات بروید.
در بخش دامنههای مجاز، روی افزودن دامنه کلیک کنید و دامنه خود را اضافه کنید.
مدیریت جریان ورود به سیستم با «کیت توسعه نرمافزار Firebase»
برای مدیریت جریان ورود به سیستم با «کیت توسعه نرمافزار جاوا اسکریپت Firebase»، این مراحل را دنبال کنید:
بااستفاده از شناسه ارائهدهندهای که در کنسول Firebase دریافت کردهاید، نمونهای از
SAMLAuthProviderایجاد کنید.Web
import { SAMLAuthProvider } from "firebase/auth"; const provider = new SAMLAuthProvider('saml.example-provider');Web
var provider = new firebase.auth.SAMLAuthProvider('saml.example-provider'); ``
بااستفاده از شیء ارائهدهنده SAML، با Firebase اصالتسنجی کنید.
میتوانید کاربر را به صفحه ورود به سیستم ارائهدهنده هدایت کنید یا صفحه ورود به سیستم را در پنجره مرورگر بالاپری باز کنید.
جریان هدایت کردن
با تماس با
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()استفاده کنید. از این الگو میتوان برای بازیابی اطلاعات اعتباری جدید برای عملیات حساس که نیاز به ورود به سیستم اخیر دارند استفاده کرد.