अगर आपने पहचान प्लेटफ़ॉर्म के साथ फायरबेस प्रमाणीकरण में अपग्रेड किया है, तो आप अपनी पसंद के एसएएमएल पहचान प्रदाता का उपयोग करके अपने उपयोगकर्ताओं को फायरबेस के साथ प्रमाणित कर सकते हैं। यह उपयोगकर्ताओं को आपके Firebase ऐप में साइन इन करने के लिए आपके SAML-आधारित SSO समाधान का उपयोग करना संभव बनाता है।
फायरबेस प्रमाणीकरण केवल सेवा-प्रदाता द्वारा आरंभ किए गए SAML प्रवाह का समर्थन करता है।
शुरू करने से पहले
SAML पहचान प्रदाता का उपयोग करने वाले उपयोगकर्ताओं में प्रवेश करने के लिए, आपको पहले प्रदाता से कुछ जानकारी एकत्र करनी होगी:
- प्रदाता की इकाई आईडी : एक यूआरआई जो पहचान प्रदाता की पहचान करता है।
- प्रदाता का SAML SSO URL : पहचान प्रदाता के साइन-इन पृष्ठ का URL।
- प्रदाता का सार्वजनिक कुंजी प्रमाणपत्र : पहचान प्रदाता द्वारा हस्ताक्षरित टोकन को मान्य करने के लिए उपयोग किया जाने वाला प्रमाणपत्र।
- आपके ऐप की इकाई आईडी : एक यूआरआई जो आपके ऐप, "सेवा प्रदाता" की पहचान करता है।
ऊपर दी गई जानकारी मिलने के बाद, SAML को अपने Firebase प्रोजेक्ट के लिए साइन-इन करने वाली कंपनी के तौर पर चालू करें:
यदि आपने पहचान प्लेटफ़ॉर्म के साथ फायरबेस प्रमाणीकरण में अपग्रेड नहीं किया है, तो ऐसा करें। एसएएमएल प्रमाणीकरण केवल उन्नत परियोजनाओं में उपलब्ध है।
फायरबेस कंसोल के साइन-इन प्रदाता पृष्ठ पर, नया प्रदाता जोड़ें पर क्लिक करें और फिर SAML पर क्लिक करें।
इस प्रदाता को एक नाम दें। उत्पन्न होने वाली प्रदाता आईडी पर ध्यान दें:
saml.example-provider
जैसा कुछ। जब आप अपने ऐप में साइन-इन कोड जोड़ते हैं तो आपको इस आईडी की आवश्यकता होगी।अपने पहचान प्रदाता की इकाई आईडी, एसएसओ यूआरएल और सार्वजनिक कुंजी प्रमाणपत्र निर्दिष्ट करें। अपने ऐप (सेवा प्रदाता) की इकाई आईडी भी निर्दिष्ट करें। ये मान आपके प्रदाता द्वारा आपको सौंपे गए मानों से सटीक रूप से मेल खाने चाहिए।
अपने परिवर्तन सहेजें।
यदि आपने अपने ऐप के डोमेन को पहले से अधिकृत नहीं किया है, तो इसे फायरबेस कंसोल के प्रमाणीकरण > सेटिंग पृष्ठ पर अनुमति सूची में जोड़ें।
फायरबेस एसडीके के साथ साइन-इन प्रवाह को संभालें
Firebase JavaScript SDK के साथ साइन-इन प्रवाह को प्रबंधित करने के लिए, इन चरणों का पालन करें:
फायरबेस कंसोल में प्राप्त प्रदाता आईडी का उपयोग करके
SAMLAuthProvider
का एक उदाहरण बनाएं।वेब मॉड्यूलर एपीआई
import { SAMLAuthProvider } from "firebase/auth"; const provider = new SAMLAuthProvider('saml.example-provider');
वेब नेमस्पेस्ड एपीआई
var provider = new firebase.auth.SAMLAuthProvider('saml.example-provider'); ``
SAML प्रदाता वस्तु का उपयोग करके फायरबेस के साथ प्रमाणित करें।
आप या तो उपयोगकर्ता को प्रदाता के साइन-इन पेज पर रीडायरेक्ट कर सकते हैं या पॉप-अप ब्राउज़र विंडो में साइन-इन पेज खोल सकते हैं।
पुनर्निर्देशित प्रवाह
signInWithRedirect()
को कॉल करके प्रदाता साइन-इन पृष्ठ पर पुनर्निर्देशित करें:वेब मॉड्यूलर एपीआई
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
वेब नेमस्पेस्ड एपीआई
firebase.auth().signInWithRedirect(provider);
उपयोगकर्ता द्वारा साइन-इन पूरा करने और आपके ऐप पर लौटने के बाद, आप
getRedirectResult()
पर कॉल करके साइन-इन परिणाम प्राप्त कर सकते हैं।वेब मॉड्यूलर एपीआई
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. });
वेब नेमस्पेस्ड एपीआई
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. });
पॉप-अप प्रवाह
वेब मॉड्यूलर एपीआई
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. });
वेब नेमस्पेस्ड एपीआई
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. });
जबकि उपरोक्त उदाहरण साइन-इन प्रवाह पर ध्यान केंद्रित करते हैं, आप
linkWithRedirect()
औरlinkWithPopup()
का उपयोग करके SAML प्रदाता को मौजूदा उपयोगकर्ता से लिंक करने के लिए समान पैटर्न का उपयोग कर सकते हैं, और उपयोगकर्ता कोreauthenticateWithRedirect()
औरreauthenticateWithPopup()
के साथ फिर से प्रमाणित कर सकते हैं। जिसका उपयोग हाल ही में लॉगिन की आवश्यकता वाले संवेदनशील कार्यों के लिए नए क्रेडेंशियल्स को पुनः प्राप्त करने के लिए किया जा सकता है।