अगर आपने Firebase Authentication with Identity Platform में अपग्रेड किया है, तो अपनी पसंद के एसएएमएल आइडेंटिटी प्रोवाइडर का इस्तेमाल करके, Firebase की मदद से अपने उपयोगकर्ताओं की पुष्टि की जा सकती है. इससे, एसएएमएल पर आधारित एसएसओ (SSO) समाधान का इस्तेमाल करके, उपयोगकर्ताओं को अपने Firebase ऐप्लिकेशन में साइन इन कराया जा सकता है.
Firebase Authentication सिर्फ़ सेवा देने वाली कंपनी की ओर से शुरू किए गए एसएएमएल फ़्लो के साथ काम करता है.
शुरू करने से पहले
एसएएमएल आइडेंटिटी प्रोवाइडर का इस्तेमाल करके, उपयोगकर्ताओं को साइन इन कराने के लिए, आपको सबसे पहले प्रोवाइडर से कुछ जानकारी इकट्ठा करनी होगी:
- प्रोवाइडर का एंटिटी आईडी: यह एक यूआरआई है, जिससे आइडेंटिटी प्रोवाइडर की पहचान की जाती है.
- प्रोवाइडर का एसएएमएल एसएसओ (SSO) यूआरएल: यह आइडेंटिटी प्रोवाइडर के साइन-इन पेज का यूआरएल है.
- प्रोवाइडर का पब्लिक की सर्टिफ़िकेट: यह सर्टिफ़िकेट, आइडेंटिटी प्रोवाइडर से साइन किए गए टोकन की पुष्टि करने के लिए इस्तेमाल किया जाता है.
- आपके ऐप्लिकेशन का एंटिटी आईडी: यह एक यूआरआई है, जिससे आपके ऐप्लिकेशन यानी "सेवा देने वाली कंपनी" की पहचान की जाती है.
ऊपर दी गई जानकारी पाने के बाद, अपने Firebase प्रोजेक्ट के लिए, एसएएमएल को साइन-इन प्रोवाइडर के तौर पर चालू करें:
अगर आपने Firebase Authentication with Identity Platform में अपग्रेड नहीं किया है, तो ऐसा करें. एसएएमएल से पुष्टि करने की सुविधा, सिर्फ़ अपग्रेड किए गए प्रोजेक्ट में उपलब्ध है.
Firebase कंसोल के साइन-इन प्रोवाइडर पेज पर, नया प्रोवाइडर जोड़ें पर क्लिक करें. इसके बाद, एसएएमएल पर क्लिक करें.
इस प्रोवाइडर को कोई नाम दें. जनरेट किया गया प्रोवाइडर आईडी नोट करें. यह
saml.example-providerजैसा कुछ हो सकता है. अपने ऐप्लिकेशन में साइन-इन कोड जोड़ते समय, आपको इस आईडी की ज़रूरत होगी.अपने आइडेंटिटी प्रोवाइडर का एंटिटी आईडी, एसएसओ (SSO) यूआरएल, और पब्लिक की सर्टिफ़िकेट की जानकारी दें. साथ ही, अपने ऐप्लिकेशन (सेवा देने वाली कंपनी) का एंटिटी आईडी भी बताएं. ये वैल्यू, आपकी सेवा देने वाली कंपनी की ओर से असाइन की गई वैल्यू से पूरी तरह मेल खानी चाहिए.
बदलावों को सेव करें.
अगर आपने अपने ऐप्लिकेशन के डोमेन को पहले ही अनुमति नहीं दी है, तो उसे Firebase कंसोल के पुष्टि > सेटिंग पेज पर, अनुमति वाली सूची में जोड़ें.
Firebase SDK टूल की मदद से, साइन-इन फ़्लो को मैनेज करना
Firebase JavaScript SDK टूल की मदद से, साइन-इन फ़्लो को मैनेज करने के लिए, यह तरीका अपनाएं:
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'); ``
एसएएमएल प्रोवाइडर ऑब्जेक्ट का इस्तेमाल करके, 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एट्रिब्यूट में यह जानकारी दी गई हो:<Subject> <NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">test@email.com</NameID> </Subject>ऊपर दिए गए उदाहरणों में, साइन-इन फ़्लो पर फ़ोकस किया गया है. हालांकि,
linkWithRedirect()औरlinkWithPopup()का इस्तेमाल करके, एसएएमएल प्रोवाइडर को मौजूदा उपयोगकर्ता से लिंक करने के लिए भी इसी पैटर्न का इस्तेमाल किया जा सकता है. साथ ही,reauthenticateWithRedirect()औरreauthenticateWithPopup()का इस्तेमाल करके, उपयोगकर्ता की फिर से पुष्टि की जा सकती है. इनका इस्तेमाल, संवेदनशील कार्रवाइयों के लिए नए क्रेडेंशियल पाने के लिए किया जा सकता है. इन कार्रवाइयों के लिए, हाल ही में लॉगिन करना ज़रूरी होता है.