वेब ऐप्स में SAML का उपयोग करके प्रमाणित करें

यदि आपने पहचान प्लेटफ़ॉर्म के साथ फ़ायरबेस प्रमाणीकरण में अपग्रेड किया है, तो आप अपनी पसंद के एसएएमएल पहचान प्रदाता का उपयोग करके फ़ायरबेस के साथ अपने उपयोगकर्ताओं को प्रमाणित कर सकते हैं। इससे उपयोगकर्ताओं को आपके फायरबेस ऐप में साइन इन करने के लिए आपके एसएएमएल-आधारित एसएसओ समाधान का उपयोग करना संभव हो जाता है।

फायरबेस प्रमाणीकरण केवल सेवा-प्रदाता द्वारा शुरू किए गए एसएएमएल प्रवाह का समर्थन करता है।

शुरू करने से पहले

SAML पहचान प्रदाता का उपयोग करने वाले उपयोगकर्ताओं में साइन इन करने के लिए, आपको पहले प्रदाता से कुछ जानकारी एकत्र करनी होगी:

  • प्रदाता की इकाई आईडी : एक यूआरआई जो पहचान प्रदाता की पहचान करता है।
  • प्रदाता का एसएएमएल एसएसओ यूआरएल : पहचान प्रदाता के साइन-इन पृष्ठ का यूआरएल।
  • प्रदाता का सार्वजनिक कुंजी प्रमाणपत्र : पहचान प्रदाता द्वारा हस्ताक्षरित टोकन को मान्य करने के लिए उपयोग किया जाने वाला प्रमाणपत्र।
  • आपके ऐप की इकाई आईडी : एक यूआरआई जो आपके ऐप, "सेवा प्रदाता" की पहचान करता है।

उपरोक्त जानकारी प्राप्त करने के बाद, SAML को अपने फायरबेस प्रोजेक्ट के लिए साइन-इन प्रदाता के रूप में सक्षम करें:

  1. अपने जावास्क्रिप्ट प्रोजेक्ट में फायरबेस जोड़ें

  2. यदि आपने आइडेंटिटी प्लेटफ़ॉर्म के साथ फ़ायरबेस प्रमाणीकरण में अपग्रेड नहीं किया है, तो ऐसा करें। एसएएमएल प्रमाणीकरण केवल उन्नत परियोजनाओं में उपलब्ध है।

  3. फायरबेस कंसोल के साइन-इन प्रदाता पृष्ठ पर, नया प्रदाता जोड़ें पर क्लिक करें और फिर SAML पर क्लिक करें।

  4. इस प्रदाता को एक नाम दें. जनरेट की गई प्रदाता आईडी पर ध्यान दें: saml.example-provider जैसा कुछ। जब आप अपने ऐप में साइन-इन कोड जोड़ेंगे तो आपको इस आईडी की आवश्यकता होगी।

  5. अपने पहचान प्रदाता की इकाई आईडी, एसएसओ यूआरएल और सार्वजनिक कुंजी प्रमाणपत्र निर्दिष्ट करें। अपने ऐप (सेवा प्रदाता) की इकाई आईडी भी निर्दिष्ट करें। ये मान आपके प्रदाता द्वारा आपको दिए गए मानों से बिल्कुल मेल खाने चाहिए।

  6. अपने परिवर्तन सहेजें.

  7. यदि आपने पहले से ही अपने ऐप के डोमेन को अधिकृत नहीं किया है, तो इसे फायरबेस कंसोल के प्रमाणीकरण> सेटिंग्स पृष्ठ पर अनुमति सूची में जोड़ें।

फायरबेस एसडीके के साथ साइन-इन प्रवाह को संभालें

फायरबेस जावास्क्रिप्ट एसडीके के साथ साइन-इन प्रवाह को संभालने के लिए, इन चरणों का पालन करें:

  1. फायरबेस कंसोल में प्राप्त प्रदाता आईडी का उपयोग करके SAMLAuthProvider का एक उदाहरण बनाएं।

    वेब मॉड्यूलर एपीआई

    import { SAMLAuthProvider } from "firebase/auth";
    
    const provider = new SAMLAuthProvider('saml.example-provider');
    

    वेब नेमस्पेस्ड एपीआई

    var provider = new firebase.auth.SAMLAuthProvider('saml.example-provider');
    ``
    
  1. 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.
      });
    

    आईडी टोकन और यूजरइन्फो ऑब्जेक्ट में उपयोगकर्ता का ईमेल पता तभी शामिल होता है, जब यह पहचान प्रदाता से एसएएमएल दावे की NameID विशेषता में प्रदान किया गया हो:

    <Subject>
      <NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">test@email.com</NameID>
    </Subject>
    
  2. जबकि उपरोक्त उदाहरण साइन-इन प्रवाह पर ध्यान केंद्रित करते हैं, आप linkWithRedirect() और linkWithPopup() का उपयोग करके SAML प्रदाता को मौजूदा उपयोगकर्ता से लिंक करने के लिए समान पैटर्न का उपयोग कर सकते हैं, और reauthenticateWithRedirect() और reauthenticateWithPopup() के साथ उपयोगकर्ता को फिर से प्रमाणित कर सकते हैं। जिसका उपयोग उन संवेदनशील परिचालनों के लिए ताज़ा क्रेडेंशियल प्राप्त करने के लिए किया जा सकता है जिनके लिए हाल ही में लॉगिन की आवश्यकता होती है।