Authentication and Authorization
Tags: authentication, authorization
Published: 2023-10-03 08:37:19


**Authentication** এবং **Authorization** মৌলিকভাবে বিভিন্ন ফাংশন উপস্থাপন করে, যদিও প্রায়শই তারা interchangeably ব্যবহৃত হয়। এই আর্টিকেলে, আমরা দুটির আলোচনা, তুলনা ও বৈসাদৃশ্য করি তা দেখানোর জন্য যে তারা কীভাবে complementary উপায়ে অ্যাপ্লিকেশনগুলিকে রক্ষা করে। তবে, তার আগে আমরা আরেকটা জিনিস সম্পর্কে সাধারণ ধারণা জেনে নি। সেটি হলো **Introduction to Identity and Access Management (IAM)**।

## **Identity and Access Management (IAM) কি**?

**IAM** বোঝার জন্য, আপনাকে কিছু মৌলিক ধারণার সাথে পরিচিত হতে হবে:

- একটি **digital resource** (ডিজিটাল রিসোর্স) হল একটি কম্পিউটার সিস্টেমে অ্যাপ্লিকেশন এবং ডেটার যে কোনো সমন্বয়/combination। ডিজিটাল রিসোর্সের উদাহরণগুলির মধ্যে রয়েছে ওয়েব অ্যাপ্লিকেশন, APIs, প্ল্যাটফর্ম, ডিভাইস বা ডেটাবেস।

- আইএএম এর মূল হল **Identity**। কেউ আপনার ডিজিটাল রিসোর্সের অ্যাক্সেস চায়। এটি একজন **customer, employee, member, participant** এবং আরও অনেক কিছু হতে পারে। আইএএম-এ, একটি ব্যবহারকারী অ্যাকাউন্ট হচ্ছে একটি ডিজিটাল আইডেন্টিটি বা পরিচয়। ব্যবহারকারীর অ্যাকাউন্টগুলি **non-human** কেও represent করতে পারে, যেমন সফ্টওয়্যার, ইন্টারনেট অফ থিংস ডিভাইস বা রোবোটিক্স৷


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y5wou99l64x93w9ayzmd.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qkwf6wuv9zpckdsq3yjl.png)

- **Authentication** হল একটি ডিজিটাল আইডেন্টিটি **verification**। যখন ইউজাররা  **authenticate** করে তখন তারা ঐ সাইটে বা অ্যাপে এইটা prove করে যে তারা সেই ব্যবহারকারী যা তারা claim করে।

- **Authorization** হল ব্যবহারকারী কোন রিসোর্স অ্যাক্সেস করতে পারে তা নির্ধারণ করার প্রসেস।

## **IAM কি করে**?

আইডেন্টিটি এবং অ্যাক্সেস ম্যানেজমেন্ট আপনাকে ব্যবহারকারীর **validation** এবং resource অ্যাক্সেসের উপর নিয়ন্ত্রণ দেয়:

- কিভাবে ব্যবহারকারীরা আপনার সিস্টেমের একটি অংশ হয়ে ওঠে
- ব্যবহারকারীর কোন তথ্য সংরক্ষণ করতে হবে
- কিভাবে ব্যবহারকারীরা তাদের আইডেন্টিটি প্রমাণ করতে পারেন
- কখন এবং কত frequently ব্যবহারকারীদের তাদের পরিচয় authenticate করতে হবে
- কোন ব্যাবহারকারী কোন রিসোর্স অ্যাকসেস করতে পারবে এবং কোন রিসোর্স  পারবে না তা নির্ধারণ করা


## **Authentication এবং Authorization**

**Authentication** এবং **Authorization** এই দুইটা টার্ম একজন ইউজারের কাছে কনফিউজিং মনে হয়। এইটা হওয়াটা খুবই স্বাভাবিক। কারণ, এই দুটিই একজন ইউজারের কাছে একই experience মনে হয় যখন সে কোনো সিস্টেম ব্যাবহার করে। তবে, এগুলি দুটি পৃথক প্রক্রিয়া: **authentication** ব্যবহারকারীর পরিচয় প্রমাণ করে,আর অন্যদিকে **authorization** নির্দিষ্ট রিসোর্সগুলিতে ব্যবহারকারীর অ্যাক্সেসকে **grant** করে বা **deny** করে।

আপনি একটি অফিস বিল্ডিংয়ের নিরাপত্তা ব্যবস্থা হিসাবে **Authentication** এবং **Authorization** এর কথা ভাবতে পারেন। ব্যবহারকারীরা হল সেই ব্যক্তি যারা বিল্ডিংয়ে প্রবেশ করতে চান। লোকেরা যে সম্পদগুলি অ্যাক্সেস করতে চায় সেগুলি হল বিল্ডিংয়ের area গুলি: মেঝে, কক্ষ এবং আরও অনেক কিছু৷

**Authentication:** আপনি যখন বিল্ডিংয়ে প্রবেশ করবেন, আপনাকে অবশ্যই আপনার ফটো আইডি ব্যাজটি নিরাপত্তারক্ষীকে দেখাতে হবে। প্রহরী ব্যাজের ছবির সাথে আপনার মুখের তুলনা করে।যদি তারা মিলে যায়, গার্ড আপনাকে দরজা দিয়ে বিল্ডিংয়ের বিভিন্ন এলাকায় প্রবেশ করার চেষ্টা করতে দেয়। আপনি কোন কক্ষে প্রবেশ করতে পারবেন তা গার্ড আপনাকে বলে না; তারা শুধুমাত্র প্রমাণ চায় যে আপনি নিজেকে যে লোক হিসেবে দাবি করেছেন, সে লোকটা আপনি কিনা। এটি হল **authentication:** ব্যবহারকারীর পরিচয় নিশ্চিত করা।


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u977z6woedbhrttwo32u.png)


**Authorization:** এই scenario-তে, কল্পনা করুন যে আপনি যে কোম্পানিতে চাকরি করেন সেটি একটি বিল্ডিংয়ে অবস্থিত। সাথে আরও অনেকের কোম্পানীও আছে ঐ বিল্ডিংয়ে। বিল্ডিংয়ের লিফট এবং দরজাগুলিতে অ্যাক্সেসের জন্য কিছু **key-sensors** রয়েছে। আপনার ব্যাজের সিকিউরিটি-চিপ আপনাকে শুধুমাত্র প্রথম তলায় অ্যাক্সেস দেয়, যেটি আপনার কোম্পানির জন্য বরাদ্ধ। আপনি অন্য কোনো ফ্লোরে প্রবেশ করতে আপনার ব্যাজ সোয়াইপ করলে, আপনার অ্যাক্সেস ডিনাই করা হবে। ঠিক একইভাবে, আপনি আপনার অফিসে শুধুমাত্র আপনার ডেস্ক **access** করতে পারেন। কিন্তু আপনার সহকর্মীদের ডেস্ক আক্সেসে আপনার পারমিশন নেই। আবার, আপনি সরবরাহ রুম প্রবেশ করতে পারেন কিন্তু সার্ভার রুম না। এটিই হল **Authorization:** পরিচয়ের উপর ভিত্তি করে বিভিন্ন রিসোর্সগুলিতে অ্যাক্সেস প্রদান এবং অস্বীকার করা।


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mxsrg7xoq58i56zr72uw.png)

এখন **authentication** এবং **authorization** এর পার্থক্যগুলির একটা কুইক রিভিউ দেখে ফেলিঃ 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ceagbzregexr4ej2iwb4.png)

সংক্ষেপে, একটি **resource** এর অ্যাক্সেস **authentication** এবং **authorization** উভয় দ্বারা **protected**।  আপনি যদি আপনার পরিচয় প্রমাণ করতে না পারেন, তাহলে আপনাকে কোনো রিসোর্সে প্রবেশের অনুমতি দেওয়া হবে না। এবং এমনকি যদি আপনি আপনার পরিচয় প্রমাণ করতে পারেন, আপনি যদি সেই রিসোর্সের জন্য অনুমোদিত(authorized) না হন, তাহলেও আপনাকে অ্যাক্সেস থেকে বঞ্চিত করা হবে।