ওয়েব অ্যাপে SAML ব্যবহার করে প্রমাণীকরণ করুন

আপনি যদি আইডেন্টিটি প্ল্যাটফর্মের সাথে Firebase প্রমাণীকরণে আপগ্রেড করে থাকেন, তাহলে আপনি আপনার পছন্দের SAML পরিচয় প্রদানকারী ব্যবহার করে Firebase এর মাধ্যমে আপনার ব্যবহারকারীদের প্রমাণীকরণ করতে পারেন। এটি আপনার Firebase অ্যাপে ব্যবহারকারীদের সাইন ইন করতে আপনার SAML-ভিত্তিক SSO সমাধান ব্যবহার করা সম্ভব করে তোলে।

ফায়ারবেস প্রমাণীকরণ শুধুমাত্র পরিষেবা প্রদানকারীর সূচনা SAML প্রবাহকে সমর্থন করে।

তুমি শুরু করার আগে

SAML পরিচয় প্রদানকারী ব্যবহার করে ব্যবহারকারীদের সাইন ইন করতে, আপনাকে প্রথমে প্রদানকারীর কাছ থেকে কিছু তথ্য সংগ্রহ করতে হবে:

  • প্রদানকারীর সত্তা আইডি : একটি URI যা পরিচয় প্রদানকারীকে শনাক্ত করে।
  • প্রদানকারীর SAML SSO URL : পরিচয় প্রদানকারীর সাইন-ইন পৃষ্ঠার URL৷
  • প্রদানকারীর সর্বজনীন কী শংসাপত্র : শংসাপত্রটি পরিচয় প্রদানকারীর স্বাক্ষরিত টোকেন যাচাই করতে ব্যবহৃত হয়।
  • আপনার অ্যাপের সত্তা আইডি : একটি URI যা আপনার অ্যাপ, "পরিষেবা প্রদানকারী" সনাক্ত করে।

আপনার কাছে উপরের তথ্য পাওয়ার পরে, আপনার Firebase প্রকল্পের জন্য সাইন-ইন প্রদানকারী হিসাবে SAML সক্ষম করুন:

  1. আপনার JavaScript প্রকল্পে Firebase যোগ করুন

  2. আপনি যদি আইডেন্টিটি প্ল্যাটফর্মের সাথে ফায়ারবেস প্রমাণীকরণে আপগ্রেড না করে থাকেন তবে তা করুন৷ SAML প্রমাণীকরণ শুধুমাত্র আপগ্রেড করা প্রকল্পগুলিতে উপলব্ধ।

  3. Firebase কনসোলের সাইন-ইন প্রদানকারী পৃষ্ঠায়, নতুন প্রদানকারী যোগ করুন ক্লিক করুন এবং তারপরে SAML এ ক্লিক করুন।

  4. এই প্রদানকারীর একটি নাম দিন. যে প্রোভাইডার আইডি তৈরি হয়েছে তা নোট করুন: saml.example-provider এর মত কিছু। আপনি যখন আপনার অ্যাপে সাইন-ইন কোড যোগ করবেন তখন আপনার এই আইডির প্রয়োজন হবে।

  5. আপনার পরিচয় প্রদানকারীর সত্তা আইডি, SSO URL এবং সর্বজনীন কী শংসাপত্র নির্দিষ্ট করুন৷ এছাড়াও আপনার অ্যাপের (পরিষেবা প্রদানকারী) সত্তা আইডি উল্লেখ করুন। এই মানগুলি অবশ্যই আপনার প্রদানকারীর দ্বারা নির্ধারিত মানগুলির সাথে হুবহু মেলে৷

  6. আপনার পরিবর্তন সংরক্ষণ করুন.

  7. আপনি যদি ইতিমধ্যে আপনার অ্যাপের ডোমেন অনুমোদন না করে থাকেন, তাহলে Firebase কনসোলের প্রমাণীকরণ > সেটিংস পৃষ্ঠায় অনুমতি তালিকায় এটি যোগ করুন।

Firebase SDK দিয়ে সাইন-ইন ফ্লো পরিচালনা করুন

Firebase JavaScript SDK দিয়ে সাইন-ইন প্রবাহ পরিচালনা করতে, এই ধাপগুলি অনুসরণ করুন:

  1. Firebase কনসোলে আপনি যে প্রোভাইডার আইডি পেয়েছেন সেটি ব্যবহার করে একটি SAMLAuthProvider এর একটি উদাহরণ তৈরি করুন।

    ওয়েব মডুলার API

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

    ওয়েব নামস্থান API

    var provider = new firebase.auth.SAMLAuthProvider('saml.example-provider');
    ``
    
  1. SAML প্রদানকারী অবজেক্ট ব্যবহার করে Firebase দিয়ে প্রমাণীকরণ করুন।

    আপনি হয় ব্যবহারকারীকে প্রদানকারীর সাইন-ইন পৃষ্ঠায় পুনঃনির্দেশ করতে পারেন অথবা একটি পপ-আপ ব্রাউজার উইন্ডোতে সাইন-ইন পৃষ্ঠা খুলতে পারেন৷

    পুনঃনির্দেশিত প্রবাহ

    signInWithRedirect() কল করে প্রদানকারীর সাইন-ইন পৃষ্ঠায় পুনঃনির্দেশ করুন :

    ওয়েব মডুলার API

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

    ওয়েব নামস্থান API

    firebase.auth().signInWithRedirect(provider);
    

    ব্যবহারকারী সাইন-ইন সম্পূর্ণ করার পরে এবং আপনার অ্যাপে ফিরে আসার পরে, আপনি getRedirectResult() কল করে সাইন-ইন ফলাফল পেতে পারেন।

    ওয়েব মডুলার API

    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.
      });
    

    ওয়েব নামস্থান API

    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.
      });
    

    পপ-আপ প্রবাহ

    ওয়েব মডুলার API

    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.
      });
    

    ওয়েব নামস্থান API

    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.
      });
    

    ID টোকেন এবং UserInfo অবজেক্টে ব্যবহারকারীর ইমেল ঠিকানা থাকে শুধুমাত্র যদি এটি পরিচয় প্রদানকারীর SAML দাবির 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() দিয়ে একজন ব্যবহারকারীকে পুনরায় প্রমাণীকরণ করতে পারেন, যা সাম্প্রতিক লগইন প্রয়োজন এমন সংবেদনশীল ক্রিয়াকলাপের জন্য নতুন শংসাপত্র পুনরুদ্ধার করতে ব্যবহার করা যেতে পারে।