वेब ऐप्लिकेशन में एसएएमएल का इस्तेमाल करके पुष्टि करें

अगर आपने Identity Platform के साथ Firebase से पुष्टि करने की सुविधा पर अपग्रेड किया है, तो अपने उपयोगकर्ताओं की Firebase की पुष्टि करने के लिए, अपनी पसंद के एसएएमएल आइडेंटिटी प्रोवाइडर का इस्तेमाल किया जा सकता है. इसकी मदद से, एसएएमएल पर आधारित एसएसओ (SSO) की मदद से उपयोगकर्ताओं को आपके Firebase ऐप्लिकेशन में साइन इन किया जा सकता है.

Firebase से पुष्टि करने की सुविधा, सिर्फ़ सेवा देने वाली कंपनी की ओर से शुरू किए गए एसएएमएल फ़्लो के साथ काम करती है.

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

किसी एसएएमएल आइडेंटिटी प्रोवाइडर की मदद से साइन इन करने के लिए, आपको पहले सेवा देने वाली कंपनी से कुछ जानकारी इकट्ठा करनी होगी:

  • सेवा देने वाली कंपनी का इकाई आईडी: एक यूआरआई जो आइडेंटिटी प्रोवाइडर की पहचान करता है.
  • सेवा देने वाली कंपनी का एसएएमएल एसएसओ (SSO) यूआरएल: आइडेंटिटी प्रोवाइडर के साइन इन पेज का यूआरएल.
  • सेवा देने वाली कंपनी का सार्वजनिक पासकोड का सर्टिफ़िकेट: इस सर्टिफ़िकेट का इस्तेमाल, पहचान देने वाली सेवा के हस्ताक्षर किए गए टोकन की पुष्टि करने के लिए किया जाता है.
  • आपके ऐप्लिकेशन का इकाई आईडी: एक यूआरआई जो आपके ऐप्लिकेशन की पहचान करता है, यानी "सेवा देने वाली कंपनी".

ऊपर दी गई जानकारी मिलने के बाद, अपने Firebase प्रोजेक्ट के लिए, साइन इन की सेवा देने वाली कंपनी के तौर पर एसएएमएल को चालू करें:

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

  2. अगर आपने Identity Platform की मदद से Firebase से पुष्टि करने की सुविधा पर अपग्रेड नहीं किया है, तो ऐसा करें. एसएएमएल पुष्टि सिर्फ़ अपग्रेड किए गए प्रोजेक्ट में उपलब्ध है.

  3. Firebase कंसोल के साइन इन करने की सुविधा देने वाली कंपनियां पेज पर, सेवा देने वाली नई कंपनी जोड़ें पर क्लिक करें और फिर एसएएमएल पर क्लिक करें.

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

  5. अपने आइडेंटिटी प्रोवाइडर का इकाई आईडी, एसएसओ (SSO) यूआरएल, और सार्वजनिक पासकोड सर्टिफ़िकेट के बारे में बताएं. अपने ऐप्लिकेशन (सेवा देने वाली कंपनी) का इकाई आईडी भी बताएं. ये वैल्यू, उन वैल्यू से पूरी तरह मेल खानी चाहिए जो आपको सेवा देने वाली कंपनी ने असाइन की हैं.

  6. बदलावों को सेव करें.

  7. अगर आपने पहले से अपने ऐप्लिकेशन के डोमेन को अनुमति नहीं दी है, तो उसे Firebase कंसोल के पुष्टि करने > सेटिंग पेज पर जाकर, अनुमति वाली सूची में जोड़ें.

Firebase SDK टूल की मदद से साइन-इन की प्रोसेस को मैनेज करना

Firebase JavaScript SDK टूल से साइन इन फ़्लो को मैनेज करने के लिए, यह तरीका अपनाएं:

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