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

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

Firebase Authentication শুধুমাত্র পরিষেবা প্রদানকারী দ্বারা শুরু করা SAML ফ্লো সমর্থন করে।

শুরু করার আগে

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

  • প্রোভাইডারের এনটিটি আইডি : একটি ইউআরআই যা আইডেন্টিটি প্রোভাইডারকে শনাক্ত করে।
  • প্রোভাইডারের SAML SSO URL : আইডেন্টিটি প্রোভাইডারের সাইন-ইন পেজের URL।
  • প্রোভাইডারের পাবলিক কী সার্টিফিকেট : আইডেন্টিটি প্রোভাইডার দ্বারা স্বাক্ষরিত টোকেন যাচাই করার জন্য ব্যবহৃত সার্টিফিকেট।
  • আপনার অ্যাপের এনটিটি আইডি : একটি ইউআরআই যা আপনার অ্যাপ, অর্থাৎ "পরিষেবা প্রদানকারী"-কে শনাক্ত করে।

উপরের তথ্যগুলো পাওয়ার পর, আপনার Firebase প্রোজেক্টের জন্য SAML-কে সাইন-ইন প্রোভাইডার হিসেবে সক্রিয় করুন:

  1. আপনার জাভাস্ক্রিপ্ট প্রজেক্টে ফায়ারবেস যুক্ত করুন

  2. আপনি যদি Firebase Authentication with Identity Platform আপগ্রেড না করে থাকেন, তবে তা করুন। SAML অথেনটিকেশন শুধুমাত্র আপগ্রেড করা প্রজেক্টগুলিতেই উপলব্ধ।

  3. Firebase কনসোলের সাইন-ইন প্রোভাইডার্স পৃষ্ঠায়, ‘Add new provider’-এ ক্লিক করুন এবং তারপরে ‘SAML’-এ ক্লিক করুন।

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

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

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

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

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. SAML প্রোভাইডার অবজেক্ট ব্যবহার করে 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.
      });
    

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