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

Auth0 সহ রুবি অন রেলে প্রমাণীকরণ স্ট্রীমলাইন করা:একটি বিগিনারস গাইড

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

এই নিবন্ধটি একটি Ruby on Rails অ্যাপ্লিকেশানে Auth0 এর সেটআপ এবং ব্যবহারকে কভার করবে, যার মধ্যে আপনার যা কিছু সঠিকভাবে চলতে হবে, ভূমিকা পরিচালনা করা থেকে ব্যবহারকারীদের প্রমাণীকরণের জন্য একাধিক প্রদানকারীর উপর নির্ভর করা পর্যন্ত।

শুরু করা

শুরু করার জন্য আমাদের যা দরকার তা এখানে:

  • একটি Auth0 অ্যাকাউন্ট
  • A Ruby on Rails অ্যাপ্লিকেশন (সংস্করণ 7.x পরবর্তী)

Auth0 একটি বিনামূল্যের স্তর সহ একটি তৃতীয় পক্ষের প্রমাণীকরণ পরিষেবা যা আপনাকে 7,000 ব্যবহারকারী পর্যন্ত পরিচালনা করতে দেয়৷ এটি আপনাকে শুরু করার জন্য যথেষ্ট, এবং আপনার যদি আরও উন্নত বৈশিষ্ট্যের প্রয়োজন হয় তবে এর মূল্য যুক্তিসঙ্গত৷

Auth0 এ আমাদের রুবি অ্যাপ কনফিগার করা হচ্ছে

যেহেতু আপনার অ্যাপ্লিকেশন পুনঃনির্দেশ এবং কলের মাধ্যমে ব্যবহারকারীদের প্রমাণীকরণ করতে Auth0-এর উপর নির্ভর করবে, তাই আমাদের অবশ্যই নিশ্চিত করতে হবে যে এটি সুরক্ষিত থাকবে।

আমাদের Auth0 অ্যাকাউন্টে, আসুন একজন ভাড়াটেদের মধ্যে একটি অ্যাপ্লিকেশন তৈরি করি। আপনি আলাদা করতে একটি অ্যাকাউন্টে একাধিক ভাড়াটে তৈরি করতে পারেন:

  • ডোমেন নাম।
  • বিভিন্ন পরিবেশ (উন্নয়ন, উৎপাদন, ইত্যাদি)।
  • যে দেশ বা অঞ্চলের মধ্যে ডেটা সংরক্ষণ করা হবে।

একবার আপনি আপনার প্রথম ভাড়াটে তৈরি হয়ে গেলে, আপনি একটি অ্যাপ্লিকেশন তৈরি করতে পারেন। সেখানেই আমরা শুরু করব।

অ্যাপ্লিকেশন প্যানেলে "সেটিংস" ট্যাবে যান। আপনাকে নিম্নলিখিতগুলি কপি এবং পেস্ট করতে হবে এবং এটি একটি নিরাপদ স্থানে সংরক্ষণ করতে হবে:

  • ডোমেন নাম:app-name.[eu,us,..].auth0.com
  • ক্লায়েন্টের আইডি
  • ক্লায়েন্টের গোপনীয়তা

আমাদের অবশ্যই নিম্নলিখিত অ্যাপ্লিকেশন ইউআরআইগুলি পূরণ করতে হবে। আমরা আমাদের স্থানীয় উন্নয়ন সেটআপের জন্য এই মানগুলি ব্যবহার করব:

  • অনুমোদিত কলব্যাক URL:http://localhost:3000/auth/auth0/callback (URL Auth0 প্রমাণীকরণের পরে পুনঃনির্দেশিত হবে)।
  • অনুমতিপ্রাপ্ত লগআউট URL:http://localhost:3000 (কেউ লগ আউট করার পরে URL Auth0 রিডাইরেক্ট হবে)।

আসুন এগিয়ে যাই এবং আমাদের অ্যাপ কনফিগার করি।

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

আপনি rails new ব্যবহার করে একটি ভ্যানিলা রুবি অন রেল অ্যাপ্লিকেশন দিয়ে শুরু করতে পারেন আদেশ।

আসুন একটি তৈরি করি যা ডাটাবেসের জন্য SQLite3 এবং CSS লাইব্রেরির জন্য Tailwind-এর উপর নির্ভর করে। মিনি-টেস্টের ইনস্টলেশন এড়িয়ে যান এবং অ্যাপ্লিকেশনটির নাম দিন "Auth0 নিবন্ধ":

 

মাত্র কয়েকটি বৈশিষ্ট্য সহ একটি ব্যবহারকারী মডেল তৈরি করুন:

 

এটি আমাদের অ্যাপ্লিকেশনের জন্য একটি সহজ কিন্তু দক্ষ ভিত্তি তৈরি করে৷

অ্যাপটিতে Auth0 Gem যোগ করা হচ্ছে

আপনার প্রয়োজন হবে omniauth-auth0 এবং omniauth-rails_csrf_protection আপনার Ruby on Rails অ্যাপ্লিকেশনে Auth0 ব্যবহার করতে।

 

Auth0 কনফিগার করা হচ্ছে

আমাদের একটি ছোট কনফিগারেশন ফাইল তৈরি করতে হবে (config/auth0.yml ) আমাদের ডেভেলপমেন্ট এনভায়রনমেন্টে শংসাপত্র সংরক্ষণ করতে।

 

আমরা এখানে কিছু erb:

ব্যবহার করে পরিবেশের ভেরিয়েবলের উপরও নির্ভর করতে পারি
 

অবশ্যই, Ruby on Rails শংসাপত্রের উপর নির্ভর করা নিশ্চিত করে যে জিনিসগুলি আরও আপ টু ডেট থাকে৷

এই ফাইলটি Auth0 ইনিশিয়ালাইজারে ব্যবহার করা হবে (config/initializers/auth0.rb ), যা আমরা এখন তৈরি করব:

 

আপনি এখানে দেখতে পাচ্ছেন, আমরা Rails.application.config_for ব্যবহার করছি একটি সুবিধাজনক হ্যাশ হিসাবে একটি YAML ফাইলের বিষয়বস্তু লোড করতে। আমরা এটিকে রেল এনক্রিপ্ট করা শংসাপত্র সঞ্চয়স্থান সহ যেকোনো গোপন হ্যান্ডলিং লাইব্রেরি দিয়ে প্রতিস্থাপন করতে পারি।

নিম্নলিখিত নোট করুন:

  • প্রদানকারীর নাম (:auth0 )
  • YAML ফাইলের তিনটি আইটেম, AUTH0_CONFIG এর মাধ্যমে পড়া এবং ব্যবহৃত হ্যাশ।
  • callback_path কী এবং মান, যা আমরা Auth0 ইন্টারফেসে কনফিগার করেছি।
  • authorize_params এবং scope এর ভিতরে চাবি; আমরা পরে ফিরে আসব।

প্রমাণীকরণের জন্য আমাদের ইন্টারফেস এবং রাউটিং উপাদান তৈরি করতে হবে।

টেইলউইন্ডের সাথে রুট এবং UI সেট আপ করা হচ্ছে

এই উদাহরণে, আমরা TailwindCSS এর সাথে ফ্রেমওয়ার্কের 7.1 সংস্করণ ব্যবহার করে একটি Ruby on Rails অ্যাপ্লিকেশনের সাথে কাজ করব৷

নিম্নলিখিত কমান্ড ব্যবহার করুন:

 

তারপরে আমরা প্রমাণীকরণ প্রক্রিয়া পরীক্ষা করার প্রস্তুতি নিয়ে সূচক অ্যাকশনের সাথে দুটি কন্ট্রোলার যোগ করতে পারি:

 

এই দুটি কমান্ডের সাথে, নিম্নলিখিতগুলি তৈরি করা হয়েছে:

  • উভয়ই public_controller.rb এবং private_controller.rb কন্ট্রোলার, ব্যবহারের জন্য প্রস্তুত সূচক অ্যাকশন সহ
  • উভয় সম্পর্কিত রুট
  • সম্পর্কিত দৃষ্টিভঙ্গি

কলব্যাক এবং ব্যর্থতাগুলি পরিচালনা করতে Auth0 কন্ট্রোলার যোগ করা যাক। কন্ট্রোলার ফাইল তৈরি করুন (bin/rails g controller auth0 ) এবং নিম্নলিখিত যোগ করুন:

 

তারপর সেই তিনটি ক্রিয়া ব্যবহার করার জন্য রুট আপডেট করুন:

 

এবং তারপর আমরা Login যোগ করতে পারি এবং Logout সর্বজনীন এবং ব্যক্তিগত দৃশ্যে বোতামগুলি, যথাক্রমে:

 

আপনি এখন 'http://localhost:3000'-এ যেতে পারেন। Login ব্যবহার করুন বোতাম এবং আপনাকে ব্যক্তিগত-এ পুনঃনির্দেশিত করা হবে পৃষ্ঠা সেখানে, আপনি একটি Logout পাবেন বোতাম।

কিছু জিনিস অনুপস্থিত, যদিও:

  • একজন ব্যবহারকারীর প্রোফাইল থেকে ডেটা
  • একজন ব্যবহারকারীকে সনাক্ত করা এবং অনুমোদন পরিচালনা করা

স্কোপ এবং ডেটা নিয়ে কাজ করা

চলুন কয়েক ধাপ পিছিয়ে যাই এবং ইনিশিয়ালাইজার (config/initializers/auth0.rb) ফিরিয়ে আনি ):

 

এখানে গুরুত্বপূর্ণ অংশ হল সুযোগ:openid profile . এটি Auth0 কে বলে যে আমরা কয়েকটি তথ্যে আগ্রহী, যথা:

  • প্রদানকারীর নাম (Auth0)
  • A uid :ব্যবহারকারীর সাথে মেলে একটি অনন্য শনাক্তকারী
  • একটি info হ্যাশ:একটি নাম, একটি প্রোফাইল ছবির URL এবং একটি খালি 'ইমেল' কী রয়েছে
  • একটি extra_info হ্যাশ:আবার, একটি নাম এবং প্রোফাইল ছবি সহ, তবে প্রদত্ত এবং পারিবারিক নামগুলির একটি জোড়াও

Auth0 এর ডকুমেন্টেশনে স্কোপের বিষয়ে আরও পড়ুন।

উপরের তথ্যটি মূল্যবান, এবং আপনাকে নিশ্চিত করতে হবে যে, অন্তত প্রথম লগইন করার পরে, আপনি আপনার অ্যাপ্লিকেশনের একটি টেবিলে সেই ডেটা কপি করেছেন৷

এটি করার জন্য, আমাদের auth0_controller-এ অনুরোধ-প্রতিক্রিয়ার বিষয়বস্তু ব্যবহার করতে হবে এবং, বিশেষভাবে, callback-এ কর্ম:

 

হ্যাশ এবং পরীক্ষায় খনন করতে রিডাইরেক্টের আগে একটি ব্রেকপয়েন্ট ব্যবহার করুন।

আমরা সাধারণত ইমেল ঠিকানা চাই। এটি পেতে, আপনি সুযোগ আপডেট করতে পারেন:

 

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

আমরা এখন callback-এ এরকম কিছু করতে পারি কর্ম:

 

এটি নিশ্চিত করবে যে ব্যবহারকারীর জন্য আমাদের একটি স্থানীয়, আপ-টু-ডেট প্রোফাইল আছে।

সেশনের উপর একটি শব্দ

রুবি অন রেল অ্যাপ্লিকেশনে একটি সেশন একটি বিশেষ হ্যাশ। এটির সীমিত স্টোরেজ রয়েছে যা কন্ট্রোলার এবং ভিউ থেকে অ্যাক্সেসযোগ্য এবং প্রতিটি দর্শকের জন্য অনন্য।

আমরা "খোলা" এবং "বন্ধ" সেশন করতে পারি। যদি আমাদের একটি নির্দিষ্ট ডেটাসেটের প্রয়োজন হয়, আমরা সিদ্ধান্ত নিতে পারি যে একটি সেশন খোলা আছে। যদি এটিতে কোন ডেটা না থাকে, তাহলে এটি বন্ধ হয়ে যায়৷

আমাদের Auth0 কন্ট্রোলারে নিম্নলিখিত লাইনগুলি মনে রাখবেন:

 

প্রথমটি raw_info-এ মান লেখে সেশন হ্যাশে হ্যাশের কী, যখন দ্বিতীয়টি কেবল সেশন হ্যাশ পরিষ্কার করে।

তারপরে আমরা ApplicationHelper এ নিম্নলিখিত সহায়ক পদ্ধতিটি সংজ্ঞায়িত করতে পারি :

 

একটি নিরাপত্তা উদ্বেগ

এখন আমাদের নিয়ন্ত্রকদের জন্য একটি উদ্বেগ হিসাবে এটি ব্যবহার করা যাক. ধারণাটি এমন একটি নিয়ামককে সংজ্ঞায়িত করা যা ব্যবহারকারীদের এটি অ্যাক্সেস করতে লগ ইন করতে হবে, যেমন আমাদের private_controller .

আমরা নিম্নলিখিত উদ্বেগ ফাইল লিখতে পারি:

 

তারপরে আমরা আমাদের কন্ট্রোলারগুলিতে এটি ব্যবহার করতে পারি:

 

যদি একজন দর্শক লগ ইন না করে থাকে, কিন্তু তারপর /private/index খোলার চেষ্টা করে পৃষ্ঠা, তারা স্বয়ংক্রিয়ভাবে সাইটের মূলে পুনঃনির্দেশিত হবে।

অন্যান্য প্রদানকারীদের সাথে একীভূত করা

আপনি Auth0 এর মাধ্যমে একাধিক প্রদানকারীর উপর নির্ভর করতে পারেন। যাইহোক, Google ডিফল্ট হিসাবে সংজ্ঞায়িত করা হয়। অনেক কোম্পানির জন্য, এটি যথেষ্ট।

আপনার যদি আরও প্রদানকারীর প্রয়োজন হয়, তাহলে প্রমাণিকরণ-এ যান৷ Auth0-এ সম্পর্কিত ভাড়াটেদের জন্য মেনু এবং তারপর সামাজিক সাবমেনু, যেখানে আপনি অতিরিক্ত প্রদানকারী সেট আপ করতে পারেন।

এটাও লক্ষণীয় যে আপনি Auth0 এর সাথেও মাল্টি-ফ্যাক্টর অথেনটিকেশন (MFA) কনফিগার করতে পারেন।

সেই কনফিগারেশন ধাপগুলি ছাড়া প্রক্রিয়াটি একই থাকবে। আমাদের আবেদন শুধুমাত্র ভিজিটর ডেটা ফেরত দেবে প্রমাণ করতে যে একজন ভিজিটর প্রমাণীকৃত হয়েছে।

অনুমোদনের দিকে খোলা হচ্ছে

এখন আমরা ব্যবহারকারীদের প্রমাণীকরণ করতে পারি এবং একটি কলব্যাকের মাধ্যমে তাদের তথ্য আমাদের অ্যাপ্লিকেশনে পাঠাতে পারি। আমরা ইতিমধ্যে দেখেছি কিভাবে একটি হ্যাশ থেকে একজন ব্যবহারকারীর ইমেল ঠিকানা বের করতে হয় এবং আমাদের ডাটাবেসে প্রাসঙ্গিক ব্যবহারকারীকে খুঁজে বের করতে হয়।

সেখান থেকে, আমরা অনুমোদন নীতি নির্ধারণ করতে পারি।

অনুমোদন নীতিগুলি সংজ্ঞায়িত এবং ব্যবহার করার জন্য পন্ডিত একটি দুর্দান্ত পছন্দ, তবুও ব্যবহারকারীর ভূমিকা পরীক্ষা করার উপর নির্ভর করে৷

একটি role ব্যবহার করা attribute হল, আসলে, সবচেয়ে সহজ পদ্ধতি। ব্যবহারকারীর প্রথম লগইন প্রচেষ্টার আগে, Rails কনসোলে বা আপনার অ্যাপ্লিকেশনের ব্যাক-এন্ড ইন্টারফেসে একজন ব্যবহারকারী তৈরি করার সময় আপনি এটি পূরণ করতে পারেন।

অথবা আপনি প্রশাসকদের ইমেলের একটি তালিকা পেতে পারেন এবং ব্যবহারকারী তৈরি করার সময় তালিকার সাথে ব্যবহারকারীর ইমেল মেলাতে পারেন৷

 

আর এটাই!

আমরা যা কভার করেছি

এই নিবন্ধে, আমরা সেট আপ করেছি:

  • Auth0 এ ভাড়াটে এবং আবেদন
  • রুবি অন রেল অ্যাপ্লিকেশনে Auth0-সম্পর্কিত রত্ন
  • অ্যাপ্লিকেশানে রুট এবং ভিউ

আমরা তারপর:

  • একটি অধিবেশনের ধারণা পর্যালোচনা করেছেন এবং এটি কীভাবে ব্যবহার করবেন তা দেখেছেন
  • ব্যবহারকারী লগ ইন করেছেন কিনা তা পরীক্ষা করার জন্য বেস টুলিং তৈরি করা হয়েছে
  • লগইন প্রয়োজনীয়তার পিছনে নিয়ন্ত্রকদের সুরক্ষিত করতে একটি কন্ট্রোলার উদ্বেগ যোগ করা হয়েছে
  • দেখলাম কিভাবে ব্যবহারকারীদের তাদের ভূমিকার সাথে মেলাতে হয়

Auth0 এবং অন্যান্য প্রমাণীকরণ প্রদানকারীরা আপনাকে অনেক কোড না লিখে আপনার Ruby on Rails অ্যাপ্লিকেশনে অত্যাধুনিক প্রমাণীকরণকে একীভূত করতে সাহায্য করতে পারে। এটি প্রায়শই প্রমাণীকরণ স্তরের আপনার নিজস্ব বাস্তবায়নের উপর নির্ভর করার চেয়ে বা এমনকি ডিভাইসের মতো রত্ন ব্যবহার করার চেয়ে অনেক ভাল বিকল্প।

শুভ কোডিং!

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

Auth0 সহ রুবি অন রেলে প্রমাণীকরণ স্ট্রীমলাইন করা:একটি বিগিনারস গাইড

থমাস রিবোলেট

আমাদের অতিথি লেখক টমাস ফ্রান্সে অবস্থিত একজন পরামর্শক ব্যাকএন্ড এবং ক্লাউড অবকাঠামো প্রকৌশলী। 13 বছরেরও বেশি সময় ধরে, তিনি স্টার্টআপ এবং কোম্পানিগুলির সাথে তাদের দল, পণ্য এবং অবকাঠামো স্কেল করার জন্য কাজ করেছেন। এছাড়াও তিনি ফ্রান্সের GNU/Linux ম্যাগাজিনে এবং তার ব্লগে বেশ কয়েকবার প্রকাশিত হয়েছেন।

টমাস রিবোলেটের সমস্ত নিবন্ধ


  1. HTML <optgroup> নিষ্ক্রিয় বৈশিষ্ট্য

  2. পিএইচপি – exif_read_data() ফাংশন

  3. একটি সংখ্যার বৃহত্তম মৌলিক ফ্যাক্টর খুঁজে বের করার জন্য পাইথন প্রোগ্রাম

  4. জাভা উদাহরণ ব্যবহার করে OpenCV ল্যাপ্লাসিয়ান ট্রান্সফরমেশন ব্যাখ্যা করুন