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

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

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

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

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

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

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

  1. अपने JavaScript प्रोजेक्ट में Firebase जोड़ें .

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

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

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

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

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

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

Firebase SDK के साथ साइन-इन प्रवाह को प्रबंधित करें

Firebase JavaScript SDK के साथ साइन-इन प्रवाह को संभालने के लिए, इन चरणों का पालन करें:

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

    Web version 9

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

    Web version 8

    var provider = new firebase.auth.SAMLAuthProvider('saml.example-provider');
    ``
    
  1. SAML प्रदाता ऑब्जेक्ट का उपयोग करके Firebase से प्रमाणित करें।

    आप या तो उपयोगकर्ता को प्रदाता के साइन-इन पेज पर रीडायरेक्ट कर सकते हैं या पॉप-अप ब्राउज़र विंडो में साइन-इन पेज खोल सकते हैं।

    पुनर्निर्देशन प्रवाह

    signInWithRedirect() पर कॉल करके प्रदाता साइन-इन पृष्ठ पर रीडायरेक्ट करें:

    Web version 9

    import { getAuth, signInWithRedirect } from "firebase/auth";
    
    const auth = getAuth();
    signInWithRedirect(auth, provider);
    

    Web version 8

    firebase.auth().signInWithRedirect(provider);
    

    उपयोगकर्ता द्वारा साइन-इन पूरा करने और आपके ऐप पर लौटने के बाद, आप getRedirectResult() पर कॉल करके साइन-इन परिणाम प्राप्त कर सकते हैं।

    Web version 9

    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 version 8

    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 version 9

    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 version 8

    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.
      });
    
  2. जबकि उपरोक्त उदाहरण साइन-इन प्रवाह पर ध्यान केंद्रित करते हैं, आप उसी पैटर्न का उपयोग करके मौजूदा उपयोगकर्ता को लिंकविथरेडायरेक्ट reauthenticateWithRedirect() linkWithRedirect() और linkWithPopup() reauthenticateWithPopup() का उपयोग करके एक एसएएमएल प्रदाता को लिंक करने के लिए उपयोग कर सकते हैं, और एक उपयोगकर्ता को फिर से प्रमाणित कर सकते हैं। जिसका उपयोग संवेदनशील कार्यों के लिए नए क्रेडेंशियल प्राप्त करने के लिए किया जा सकता है जिनके लिए हाल ही में लॉगिन की आवश्यकता होती है।