কম্পিউটার টিউটোরিয়াল

নিরাপদ JSON ওয়েব টোকেন (JWT) দিয়ে আপনার রুবি অ্যাপকে শক্তিশালী করুন

যদি একটি ওয়েব অ্যাপ্লিকেশন ব্যবহারকারীদের জড়িত করে, অবশ্যই, তাদের ডেটা সুরক্ষিত এবং সুরক্ষিত করা উচিত৷

একটি ওয়েব অ্যাপ্লিকেশন সুরক্ষিত করার অর্থ বিভিন্ন জিনিস হতে পারে। এই পোস্টে, আমরা ওয়েব নিরাপত্তার একটি উপসেট নিয়ে আলোচনা করব যাতে JSON ওয়েব টোকেন (JWTs) এবং Ruby on Rails ওয়েব অ্যাপ্লিকেশন ফ্রেমওয়ার্ক ব্যবহার করে প্রমাণীকরণ জড়িত।

চলুন শুরু করা যাক!

JSON ওয়েব টোকেন কি?

একটি JSON ওয়েব টোকেন হল একটি ইন্টারনেট স্ট্যান্ডার্ড যা ইন্টারনেট ইঞ্জিনিয়ারিং টাস্ক ফোর্স (IETF) দ্বারা সংজ্ঞায়িত করা হয়েছে:"কমপ্যাক্ট, ইউআরএল-নিরাপদ মাধ্যম দুটি পক্ষের মধ্যে স্থানান্তরিত হওয়ার দাবির প্রতিনিধিত্ব করার জন্য।"

এখানে, "দাবি" একটি বিষয় সম্পর্কে তথ্যের বিভিন্ন অংশকে বোঝায়। একটি দাবি একটি নাম/মান জোড়া হিসাবে উপস্থাপন করা হয় যেখানে নামটি সর্বদা একটি স্ট্রিং হয় এবং মানটি যেকোন JSON মান হতে পারে।

JSON ওয়েব টোকেনের মৌলিক কাঠামো

জেডব্লিউটি-এর জটিলতাগুলিকে আবিষ্কার করা এই পোস্টের সুযোগের বাইরে। এটি বলেছে, এটি JWT-এর গঠন জানা মূল্যবান।

একটি JWT তিনটি অংশ নিয়ে গঠিত, একটি পিরিয়ড দ্বারা পৃথক করা হয়:হেডার, পেলোড এবং স্বাক্ষর।

একটি উদাহরণ JWT নিম্নলিখিত মত দেখতে পারে:

 

পঠনযোগ্যতার জন্য, টোকেনের প্রতিটি অংশ একটি নতুন লাইনে শুরু হয়। অনুশীলনে, অংশগুলি যুক্ত হয়৷

এই টোকেন একটি সার্ভার থেকে একটি ক্লায়েন্ট পাঠানো হয়. ক্লায়েন্ট সার্ভারে টোকেন পাঠায় নিজেকে সনাক্ত করতে এবং একটি অনুরোধ প্রক্রিয়াকরণ করতে।

প্রথম অংশ, হেডার, টোকেন তৈরি করতে ব্যবহৃত অ্যালগরিদম এবং টোকেনের ধরন সম্পর্কে তথ্য রয়েছে। যদি ডিকোড করা হয়, আমরা এরকম কিছু পাই:

 

দ্বিতীয় অংশ, পেলোড, ব্যবহারকারী সম্পর্কে দাবির একটি সেট রয়েছে। বেশিরভাগ ক্ষেত্রে, এটি একটি ক্লায়েন্ট-সার্ভার সেটআপে ক্লায়েন্ট হবে, এবং এটি দেখতে এরকম হতে পারে:

 

স্বাক্ষর (একটি স্বাক্ষরিত JWT এর শেষ অংশ) টোকেনকে বৈধ করে। এটি বেস64url এনকোডিং — RFC 4648 ব্যবহার করে হেডার এবং পেলোড এনকোড করে এবং তারপর একটি পিরিয়ড বিভাজকের সাথে সংযুক্ত করে তৈরি করা হয়।

মূলত, স্বাক্ষর বিটের সাথে যা হয় তা হল:

 

HMAC_SHA256 SHA-256 হ্যাশ ফাংশন থেকে তৈরি এক ধরনের কীড হ্যাশ অ্যালগরিদম যা স্বাক্ষর হ্যাশ করে। ক্রিপ্টোগ্রাফিক অ্যালগরিদমের পছন্দটি আসে "alg": "HS256" থেকে হেডারে যদি টোকেনটি স্বাক্ষরবিহীন থাকে তবে এতে স্বাক্ষর ছাড়াই কেবল শিরোনাম এবং পেলোড থাকবে৷

JWTs বনাম আপনার রুবি অ্যাপের জন্য অন্যান্য প্রমাণীকরণ পদ্ধতি

JSON ওয়েব টোকেন, নাম থেকে বোঝা যায়, টোকেন-ভিত্তিক। স্পেকট্রামের অন্য প্রান্তে, আমাদের কাছে সেশন-ভিত্তিক প্রমাণীকরণ রয়েছে:ব্যবহারকারীদের প্রমাণীকরণের আরও ঐতিহ্যগত উপায়। সেশন-ভিত্তিক প্রমাণীকরণের প্রবাহ টোকেন-ভিত্তিক প্রমাণীকরণের থেকে বেশ ভিন্ন।

অধিবেশন-ভিত্তিক প্রমাণীকরণের প্রবাহ নিম্নলিখিত মত দেখতে পারে:

  1. একজন ব্যবহারকারী বা ক্লায়েন্ট একটি অনুরোধ পাঠায় যাতে ব্যবহারকারীর শংসাপত্র থাকে।
  2. সার্ভার ব্যবহারকারীকে প্রমাণীকরণ করে, একটি সেশন সঞ্চয় করে এবং ব্রাউজারে কুকি হিসাবে সঞ্চিত একটি সেশন আইডি ফেরত দেয়৷
  3. ক্লায়েন্ট সার্ভারে তার পরবর্তী অনুরোধ সহ কুকি পাঠায়।
  4. সার্ভার উপস্থাপিত সেশনের তথ্য পরিদর্শন করে এবং বৈধ হলে ব্যবহারকারীকে প্রমাণীকরণ করে এবং অনুরোধ করা তথ্য ক্লায়েন্টকে ফেরত দেয়।

যদিও সেশন-ভিত্তিক প্রমাণীকরণ বেশিরভাগই ক্লায়েন্ট-সার্ভার সংযোগের জন্য ব্যবহৃত হয়, টোকেন-ভিত্তিক প্রমাণীকরণ প্রায়ই সার্ভার-সার্ভার সংযোগের সাথে ব্যবহার করা হয় (যেমন, দুটি API-এর মধ্যে)।

উল্লেখ্য একটি গুরুত্বপূর্ণ পার্থক্য, যাইহোক, সেশন-ভিত্তিক প্রমাণীকরণের সাথে, প্রমাণীকরণের অবস্থা সার্ভারে পরিচালনা করা হয় — যখন টোকেনগুলি ক্লায়েন্টে পরিচালিত হয়।

প্রমাণিকরণের জন্য কেন JWT ব্যবহার করবেন?

প্রয়োগ করা তুলনামূলকভাবে সহজ হওয়ার পাশাপাশি, প্রমাণীকরণের জন্য JSON ওয়েব টোকেন ব্যবহার করার আরও কয়েকটি সুবিধা রয়েছে, যেমন:

  • তারা রাষ্ট্রহীন , মানে একটি সেশন স্টোরের প্রয়োজন নেই। টোকেনটিতেই ব্যবহারকারীর সমস্ত তথ্য থাকে, তাই প্রতিটি অনুরোধের তথ্যের জন্য ডেটাবেস বা প্রমাণীকরণ সার্ভারকে জিজ্ঞাসা করার প্রয়োজন নেই৷
  • JWT গুলি সাধারণত বেশি পারফরম্যান্স হয় প্রমাণীকরণের বেশিরভাগ ঐতিহ্যবাহী পদ্ধতির তুলনায় (যতক্ষণ সার্ভার ব্যবহারকারীকে প্রমাণীকরণের জন্য ডেটাবেস বা স্টোরের বিরুদ্ধে কোনো লুকআপ না করে), সেগুলিকে বেশ দক্ষ করে তোলে।
  • এছাড়াও তারা কঠিন নিরাপত্তা গ্যারান্টি অফার করে , সেই স্বাক্ষরিত JWT-এ সুরক্ষা প্রদান করে যাতে কোনও আক্রমণকারী বা ক্লায়েন্ট সুরক্ষিত ডেটাতে অ্যাক্সেস পেতে টোকেনগুলি পরিবর্তন করতে না পারে৷

রুবি অ্যাপের জন্য JWT সেরা অনুশীলনগুলি

এটা বলার অপেক্ষা রাখে না যে JWT সাইন করার জন্য ব্যবহৃত গোপন কীগুলি দীর্ঘ, এলোমেলো এবং জটিল অক্ষরের সমন্বয় থাকা উচিত। এটি নিশ্চিত করে যে চাবিগুলি পর্যাপ্তভাবে নিরাপদ এবং আক্রমণকারীদের পক্ষে তাদের জবরদস্ত করা কঠিন৷

রেলগুলি যে গোপন কীগুলি তৈরি করে সেগুলি বেশিরভাগ অংশের জন্য নিরাপদ, তবে আপনি যদি দুর্ঘটনাক্রমে কীগুলি করেন এবং সেগুলি প্রকাশ করেন তবে সুরক্ষা গ্যারান্টি বাতিল হয়ে যায়৷

নেটওয়ার্কে দলগুলোর মধ্যে টোকেন পরিবহন করার সময় ট্রান্সপোর্ট লেয়ার সিকিউরিটি (TLS) ব্যবহার করাও গুরুত্বপূর্ণ। TLS একটি ম্যান-ইন-দ্য-মিডল আক্রমণ প্রশমিত করতে পারে (টোকেন এবং সেশন-ভিত্তিক প্রমাণীকরণ পদ্ধতি উভয়ই এই ধরনের আক্রমণের প্রবণ)।

একটি Rails অ্যাপে JWT প্রমাণীকরণ প্রয়োগ করা

আসুন একটি টোকেন-ভিত্তিক প্রমাণীকরণ প্রবাহ দেখে নেওয়া যাক:

নিরাপদ JSON ওয়েব টোকেন (JWT) দিয়ে আপনার রুবি অ্যাপকে শক্তিশালী করুন

সেশন-ভিত্তিক প্রমাণীকরণের বিপরীতে, একটি রাষ্ট্রীয় প্রমাণীকরণ কৌশল যেখানে আমরা একটি প্রমাণীকৃত ব্যবহারকারীর ট্র্যাক রাখার জন্য সেশনগুলি ব্যবহার করি, JWT-এর সাথে টোকেন-ভিত্তিক প্রমাণীকরণ রাষ্ট্রহীন; সার্ভারে ব্যবহারকারীর প্রমাণীকরণ অবস্থা সম্পর্কে কোনো তথ্য সংরক্ষণ করার প্রয়োজন নেই। এটি অ্যাপ্লিকেশন ডিজাইনকে সহজ করে।

এই পোস্টে, আমরা অনুমান করব যে আমাদের অ্যাপ্লিকেশন একটি ফ্রন্টএন্ড এবং একটি ব্যাকএন্ডে বিভক্ত। প্রমাণীকরণ ব্যাকএন্ডে ঘটে, তাই আমরা প্রমাণীকরণ সহ একটি Rails API ব্যাকএন্ড তৈরি করব৷

এই পোস্টের নমুনা কোডটি Rails 7.0.5 এবং Ruby 3.2.2 এর উপর ভিত্তি করে।

jwt ব্যবহার করা এবং bcrypt রুবি রত্ন

আমাদের আবেদনের জন্য দুটি রত্ন লাগবে:jwt এবং bcrypt .

jwt RFC 7519 OAuth JSON ওয়েব টোকেন স্ট্যান্ডার্ডের একটি রুবি বাস্তবায়ন। bcrypt OpenBSD bcrypt()-এর জন্য একটি রুবি বাইন্ডিং পাসওয়ার্ড হ্যাশিং অ্যালগরিদম৷

আপনি এই কোড রেপোতে নমুনা কোড সহ অনুসরণ করতে পারেন।

দ্রষ্টব্য: jwt JWT-এর সাথে কাজ করার একমাত্র সমাধান নয়; আরেকটি সুপরিচিত রত্ন হল devise-jwt , যা ডিভাইস এবং রেলের জন্য JWT প্রমাণীকরণ প্রদান করে। কিন্তু আমরা jwt-এ ফোকাস করব এই পোস্টে।

চলুন শুরু করা যাক।

আমাদের Rails API তৈরি করা

আমাদের প্রয়োজন প্রথম জিনিস একটি API অ্যাপ্লিকেশন. আমরা এর সাথে একটি তৈরি করব:

 

--api এখানে বিকল্পটি শুধুমাত্র এপিআই অ্যাপ্লিকেশনের জন্য রেলের একটি ছোট স্ট্যাককে প্রাক-কনফিগার করে।

জেমফাইলের ভিতরে, আমরা আমাদের প্রথম নির্ভরতা, jwt যোগ করতে পারি . আমাদের দ্বিতীয় রত্ন, bcrypt , ইতিমধ্যেই একটি নতুন-উত্পন্ন রেল অ্যাপ্লিকেশনের জেমফাইলে রয়েছে — আমাদের কেবল এটিকে মন্তব্য করতে হবে৷

আমাদের bcrypt দরকার ডাটাবেসে ব্যবহারকারীর পাসওয়ার্ড নিরাপদে হ্যাশ করতে। এটা মনে রাখা গুরুত্বপূর্ণ যে আমরা bcrypt ব্যবহার করব না সরাসরি আমরা অ্যাক্টিভ মডেলের has_secure_password ব্যবহার করব ক্লাস পদ্ধতি, যা bcrypt এর উপর নির্ভর করে .

একটি নতুন রেল অ্যাপ্লিকেশনের সাথে আসা ডিফল্ট রত্নগুলিকে উপেক্ষা করে, আমাদের জেমফাইলটি এমন কিছু হওয়া উচিত:

 

bundle install দিয়ে আমাদের রত্নগুলি ইনস্টল করার এখন একটি ভাল সময়৷ .

User তৈরি করুন এবং Product মডেল

এর পরে, আমরা দুটি মডেল তৈরি করব:User এবং Product . User ব্যবহারকারীদের প্রতিনিধিত্ব করার মডেল হবে এবং Product দ্বারা উপস্থাপিত পণ্যগুলিতে অ্যাক্সেসের অনুমতি দেওয়ার জন্য আমরা এটিকে প্রমাণীকরণ করব মডেল।

 

rails db:migrate দিয়ে আমাদের মাইগ্রেশন চালানোর পর , মডেলগুলির সাথে আমাদের সেটআপ সম্পূর্ণ, এবং আমাদের স্কিমা, db/schema.rb-এ পাওয়া গেছে , এখন এর অনুরূপ হওয়া উচিত:

 

এই পর্যায়ে এটি উল্লেখ করা গুরুত্বপূর্ণ যে আমরা ইচ্ছাকৃতভাবে সম্ভাব্য সমস্যাগুলি যেমন ডাটাবেসের সীমাবদ্ধতা, বৈধতা, স্বতন্ত্রতা নিশ্চিত করা ইত্যাদি উপেক্ষা করছি৷ এই পোস্টের জন্য, আমরা অন্যদের মধ্যে ত্রুটিগুলি পরিচালনাকে উপেক্ষা করব৷ এখানে আমাদের উদ্দেশ্য হল আমাদের রুবি অ্যাপ্লিকেশনকে সুরক্ষিত করার জন্য রাষ্ট্রবিহীন প্রমাণীকরণের একটি ফর্ম হিসাবে JWT গুলিকে কর্মে প্রদর্শন করা। একটি প্রোডাকশন অ্যাপ্লিকেশানে, আপনি নিশ্চিত করতে চান যে এই সমস্তগুলি কভার করা হয়েছে৷

একটি jwt তৈরি করুন রত্ন মোড়ানো

পরবর্তী ধাপ হল jwt এর চারপাশে একটি মোড়ক তৈরি করা মণি আমরা আগে ইনস্টল করেছি। সার্ভার থেকে ক্লায়েন্টের কাছে দাবিগুলি এনকোড এবং ডিকোড করতে আমরা এই মোড়কটি ব্যবহার করব৷ এর জন্য, আমরা একটি app/lib তৈরি করব ফোল্ডার।

কারণ আমরা lib ব্যবহার করছি না রেলের সাথে যে ফোল্ডারটি আসে তা হল এটি স্বয়ংক্রিয়ভাবে লোড হয় না। app এর অধীনে সবকিছু ডিফল্টরূপে স্বয়ংক্রিয়ভাবে লোড করা হয় এবং আগ্রহী-লোড করা হয়, যা আমাদের ক্ষেত্রে একটি সহজ সেটআপের জন্য তৈরি করে৷

আমাদের র‍্যাপার ক্লাস app/lib/json_web_token.rb এ পাওয়া যায় এবং এই মত দেখায়:

 

এখানে প্রধান পদ্ধতি হল encode — ব্যবহারকারীর তথ্য এনকোড করতে — এবং decode — পরে সার্ভারে ব্যবহারকারীর তথ্য ডিকোড করতে। নোট করুন কিভাবে আমরা এনকোডিং এবং ডিকোডিং কাজগুলি jwt-এ অর্পণ করছি JWT.encode এর মাধ্যমে রত্ন এবং JWT.decode .

এই মুহুর্তে, আপনি ইতিমধ্যেই আপনার রেল কনসোলে এই ক্লাসটি পরীক্ষা করতে পারেন:

 

JsonWebToken.encode(data) এর ফলাফল কেমন তা লক্ষ্য করুন একটি পিরিয়ড দ্বারা তিনটি ভাগে বিভক্ত, হেডার, পেলোড এবং স্বাক্ষর তৈরি করে। আমাদের কাছে স্বাক্ষর বিট রয়েছে কারণ আমরা একটি গোপন কী দিয়ে আমাদের পেলোড স্বাক্ষর করেছি যা রেল Rails.application.secrets.secret_key_base এর মাধ্যমে প্রদান করে .

User এ ফিরে যান মডেল

এখন আমাদের User দেখার জন্য একটি ভাল সময় হবে app/models/user.rb এ মডেল . আমাদের এখানে যা করতে হবে তা হল has_secure_password যোগ করুন ক্লাস পদ্ধতি:

 

has_secure_password নিরাপদে ডাটাবেসে আমাদের ব্যবহারকারীদের পাসওয়ার্ড হ্যাশ করে।

রেলের মধ্যে একটি নমুনা ব্যবহারকারী এবং পণ্য তৈরি করুন

এখন আমরা আমাদের ডাটাবেসে একটি নমুনা ব্যবহারকারী এবং পণ্য তৈরি করতে এবং আমাদের অ্যাপ্লিকেশনের নিরাপত্তা পরীক্ষা করতে রেল কনসোলে যেতে পারি:

 

আপনি আপনার seeds.rb-এ একই কোডের টুকরো রাখতে পারেন আপনি আপনার ডাটাবেস রিসেট করার ক্ষেত্রে কিছু টাইপিং সংরক্ষণ করতে ফাইল করুন।

রেলস কন্ট্রোলারে JWT ব্যবহার করা

পরবর্তী ধাপে, আমরা আমাদের কন্ট্রোলারের ভিতরে JWT ব্যবহার করে নিরাপত্তা প্রয়োগ করব। শুরু করার জন্য একটি ভাল জায়গা হল ApplicationController app/controllers/application_controller.rb এ :

 

এখানে, আমরা একটি authenticate তৈরি করি JSON ওয়েব টোকেন ডিকোড করার পদ্ধতি যা ব্যবহারকারীরা আমাদের পাঠান। যদি আমরা সফলভাবে টোকেন যাচাই করতে পারি, তাহলে আমরা User ফেরত দেব অবজেক্ট যা ব্যবহারকারীকে অনুরোধ করে প্রতিনিধিত্ব করে। আমরা বেশিরভাগই এখানে সুখী পথের প্রতি আগ্রহী এবং অনেক চেক বাইপাস করব।

authenticate সংজ্ঞায়িত করা ApplicationController-এ পদ্ধতি এবং এটি একটি before_action হিসাবে সেট আপ করুন৷ এটি থেকে উত্তরাধিকারসূত্রে পাওয়া প্রতিটি নিয়ামককে সুরক্ষিত করে। অন্য যেকোন কন্ট্রোলারের কাছে অনুরোধের জন্য সেই কন্ট্রোলারগুলি অ্যাক্সেস করার জন্য একটি বৈধ JWT প্রয়োজন হবে (কারণ অন্য প্রতিটি কন্ট্রোলার এই প্রধান কন্ট্রোলারের উত্তরাধিকারী হবে)।

এরপরে, আমাদের একটি AuthenticationController প্রয়োজন যেখানে ব্যবহারকারীরা অনুরোধ পাঠাতে পারে এবং আমাদের সার্ভার থেকে একটি স্বাক্ষরিত JSON ওয়েব টোকেন পেতে পারে। এই কন্ট্রোলারটি app/controllers/authentication_controller.rb এ স্থাপন করা উচিত এবং এই মত দেখতে পারে:

 

যখন একটি অনুরোধ এই নিয়ামককে আঘাত করে, কারণ এটি একজন ব্যবহারকারী একটি টোকেন চাইছে, আমরা প্রাথমিকভাবে তাদের প্রমাণীকরণ করতে চাই না। এই কন্ট্রোলারের উদ্দেশ্য হল একটি টোকেন দিয়ে সাড়া দেওয়া যা ব্যবহারকারী আমাদের সার্ভারের বাকি সম্পদগুলি অ্যাক্সেস করতে ব্যবহার করতে পারে। তাই skip_before_action :authenticate এর প্রয়োজন দ্বিতীয় লাইনে।

login-এ অ্যাকশন (যা ব্যবহারকারীরা একটি টোকেনের জন্য আঘাত করে), আমরা username ধরি এবং password এই নিয়ামকের কাছে অনুরোধের সাথে আসা পরামিতিগুলি থেকে। যদি আমরা ব্যবহারকারীকে প্রমাণীকরণ করতে পারি — অর্থাৎ, তাদের ব্যবহারকারীর নাম এবং পাসওয়ার্ড আমাদের ডাটাবেসে সংরক্ষিত জিনিসের সাথে মেলে কিনা তা যাচাই করতে — তাহলে আমরা তাদের একটি স্বাক্ষরিত টোকেন এবং সেই টোকেনের মেয়াদ কখন শেষ হবে সে সম্পর্কে তথ্য উপস্থাপন করি৷

আমাদের ক্ষেত্রে, আমরা টোকেনের মেয়াদ শেষ হওয়ার সময় ব্যবহার করব না। কিন্তু একটি প্রোডাকশন অ্যাপ্লিকেশানে, এটি একটি সম্পদের অ্যাক্সেস প্রত্যাহার করতে ব্যবহার করা যেতে পারে৷

আমরা curl ব্যবহার করে এই সমস্ত ধাপ পার করব পরে।

একটি সুরক্ষিত সম্পদ দিয়ে আমাদের রুবি অ্যাপ্লিকেশন পরীক্ষা করা হচ্ছে

আমরা আংশিকভাবে পূর্ববর্তী 'একটি রেল অ্যাপে JWT প্রমাণীকরণ বাস্তবায়ন' বিভাগের ফ্লো ডায়াগ্রামে প্রবাহটি কভার করেছি। সম্পূর্ণরূপে সবকিছু কভার করতে এবং ফ্লো ডায়াগ্রামের সমস্ত ধাপগুলি পরীক্ষা করতে, আমাদের সুরক্ষার জন্য একটি সংস্থান প্রয়োজন৷

আমাদের একটি Product আছে মডেল ইতিমধ্যে। পণ্য এবং টোকেনগুলি অ্যাক্সেস করার জন্য আমাদের এখন পণ্য মডেল এবং রুটের জন্য একটি নিয়ামক প্রয়োজন৷

চলুন rails g controller Product index দিয়ে একটি কন্ট্রোলার তৈরি করি তাই আমাদের কাছে এরকম কিছু আছে:

 

অবশ্যই, এই কন্ট্রোলারগুলি অ্যাক্সেস করার জন্য আমাদের একটি রুট প্রয়োজন। আমাদের config/routes.rb এরকম কিছু দেখতে হবে:

 

এখন আমরা curl দিয়ে পরীক্ষা করব সবকিছু আশানুরূপ কাজ করে কিনা তা দেখতে। মনে রাখবেন যে আমাদের কাছে ইতিমধ্যেই প্রমাণীকরণের জন্য একটি ব্যবহারকারী এবং অ্যাক্সেস করার জন্য একটি পণ্য সংস্থান রয়েছে৷

আসুন এমন একটি ব্যবহারকারীর সাথে একটি JWT পাওয়ার চেষ্টা করি যার অস্তিত্ব নেই:

 

আমাদের নিম্নলিখিত প্রতিক্রিয়া পাওয়া উচিত:

 

এখন এমন একটি ব্যবহারকারীর সাথে চেষ্টা করুন যা আমরা আগে তৈরি করেছি:

 

এটি আমাদের একটি স্বাক্ষরিত JSON ওয়েব টোকেন দেবে যা দেখতে এইরকম হতে পারে:

 

আসুন এই টোকেনটি এক সেকেন্ডের জন্য রাখি এবং একটি খারাপ টোকেন সহ একটি পণ্য সংস্থান অ্যাক্সেস করার চেষ্টা করি (আমি টোকেনে একটি এলোমেলো অক্ষর পরিবর্তন করেছি):

 

এবং আমাদের পাওয়া উচিত:

 

যাইহোক, যদি আমরা পূর্বে সার্ভার থেকে পাওয়া বৈধ টোকেন সহ পণ্য সংস্থান অ্যাক্সেস করার জন্য একই অনুরোধ করি:

 

আমরা পণ্য সংস্থান অ্যাক্সেস মঞ্জুর করা হয়েছে:

 

তাই তো! আমরা একটি JSON ওয়েব টোকেন দিয়ে আমাদের রুবি অ্যাপ্লিকেশন সফলভাবে সুরক্ষিত করেছি!

র্যাপিং আপ

এই পোস্টে, আমরা JSON ওয়েব টোকেন এবং তারা কীভাবে কাজ করে তা নিয়ে আলোচনা করেছি। আমরা প্রথমে JWT-এর মূল বিষয়গুলি কভার করেছি, যার মধ্যে রয়েছে তাদের গঠন এবং কিছু সেরা অনুশীলন। তারপর আমরা jwt ব্যবহার করে একটি সাধারণ JWT প্রমাণীকরণ প্রয়োগ করেছি মণি।

আমি আশা করি আপনি এই পোস্টটি সহায়ক খুঁজে পেয়েছেন. শুভ কোডিং!

পি.এস. আপনি যদি রুবি ম্যাজিক পোস্টগুলি প্রেস থেকে বের হওয়ার সাথে সাথে পড়তে চান তবে আমাদের রুবি ম্যাজিক নিউজলেটারে সাবস্ক্রাইব করুন এবং একটি পোস্ট মিস করবেন না!


  1. Redis এবং Upstash সহ OpenAI প্রকল্পগুলি উন্নত করা:কেস এবং ভবিষ্যতের বৈশিষ্ট্যগুলি ব্যবহার করুন৷

  2. Python-এ Google Static Maps API ব্যবহার করে নির্দিষ্ট অবস্থানের একটি Google মানচিত্রের ছবি পান

  3. সর্বোত্তম পৃষ্ঠা প্রতিস্থাপন অ্যালগরিদমের জন্য C++ প্রোগ্রাম

  4. CSS বক্স মডেল সংজ্ঞায়িত করুন