ড্রুপালের সেশন ম্যানেজমেন্ট এবং ব্যবহারকারীর প্রমাণীকরণ বোঝা


16

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

ক্ষুদ্র তালা

SCENARIO: লগইন
করুন পদক্ষেপগুলির বিবরণ হবে:

  1. এসএসও সার্ভারে ইউজারনেম এবং পাসওয়ার্ড জমা দেওয়ার জন্য লগইন ফর্মটি প্রতিস্থাপন করুন ( দ্রুপালে নয় , কিন্তু। নেট)।
  2. Site সাইটের ডেটাবেস ব্যবহার করে এসএসও সার্ভারে ব্যবহারকারীকে প্রমাণীকরণ করুন; এবং আমার ওয়েবসাইটের কিছু কাস্টম পিএইচপি পৃষ্ঠায় (বা মডিউল দ্বারা একটি ফর্ম?) প্রতিক্রিয়া পাঠান ।
  3. প্রতিক্রিয়াটি ব্যবহার করে ব্যবহারকারীদের সারণিতে ব্যবহারকারীকে চিহ্নিত করুন এবং পাসওয়ার্ড পরীক্ষা না করেই ব্যবহারকারীর জন্য একটি সেশন তৈরি করুন (এটি ডাবল প্রমাণীকরণের অর্থ হবে)। ডিফল্টরূপে, দ্রুপাল $insecure_session_nameভেরিয়েবলের নাম এবং মান সহ একটি কুকি সেট করে $sid। আমি চাই দ্রুপাল এখানে কুকি সেট না করে পরিবর্তে এসএসও সার্ভারে ভেরিয়েবলের মান প্রেরণ করুন।
  4. এসএসও সার্ভার মানগুলি গ্রহণ করবে, একটি কুকি তৈরি করবে এবং এটিকে মূল ডোমেইনে ফেলে দেবে domain.com(উভয়কে স্মরণ করিয়ে দিতে my websiteএবং sso serverমূল ডোমেনের সাব ডোমেনে থাকে, যা দ্রুপালে নয়)। তারপরে, ড্রুপাল সাইটটি সেই কুকিটি ব্যবহার করে লগ ইন করতে পারে।

আমি জানি এটি একটি শক্ত জিজ্ঞাসা, আমি কীভাবে শুরু করব তা সম্পর্কে আমি কেবল পয়েন্টার সন্ধান করছি? যেমন তারা বলেছে "আপনার কোরটি হ্যাক করা উচিত নয়"। সুতরাং, আমার প্রশ্নগুলি হ'ল:

  1. ড্রুপাল প্রমাণীকরণ এবং সেশন ম্যানেজমেন্ট গভীরতার সাথে কীভাবে কাজ করে তা বুঝতে আমার কোথায় খোঁজ করা উচিত?
  2. includes/session.incহুক ব্যবহারের ক্ষেত্রে আমি ফাংশনগুলিকে কল করতে পারি এমন কোনও উপায় আছে (ফাংশনগুলির সাথে মন্তব্যগুলিতে "কেবল অভ্যন্তরীণ ব্যবহারের জন্য / পরিবর্তিত হতে হবে না" হিসাবে বলা হয়েছে)?

দ্রষ্টব্য: আমি ব্যবহারকারীকে রেজিস্টার করতে একই পদ্ধতি ব্যবহার করব, যাতে এসএসও সার্ভারের কেন্দ্রীয় ডাটাবেসে রেকর্ডটি থেকে যায় remains এবং সেই সময়ে ড্রুপাল সাইটের ডাটাবেসে একই ব্যবহারকারীর জন্য কিছু জাঙ্ক পাসওয়ার্ড রাখবে (লগইন করার সময় পাসওয়ার্ডটি চেক করা হবে না)।


আপনার কি সত্যিকারের এসএসও দরকার (একটি সাইটে লগইন করুন এবং আপনি সমস্ত সাইটে লগইন করেছেন), বা কেবল কোনও বাইরের সিস্টেমের বিরুদ্ধে প্রমাণীকরণ করছেন?
এমপিডোনাদিও

@ এমপিডি আমি একটি সত্য এসএসও চাই, যার জন্য একটি সাইটে লগ ইন করতে হবে এবং -> সমস্ত সাইটে একই ব্যবহারকারীর অনুমোদনের প্রয়োজন হবে (
দ্রুপালের

@ অজিতস আপনি যদি সফলভাবে এটি প্রয়োগ করেন তবে দয়া করে বিস্তারিত উত্তর দিতে পারেন। আমি ব্যবহারকারী_লগিন_ফাইনালাইজ ব্যবহার করছি তবে জিডিপিআর ইস্যুগুলির কারণে আমাকে বলা হচ্ছে আমি ড্রপালটিতে বিশদটি সংরক্ষণ করতে পারি না।
জিগনেশ রাওয়াল ২

উত্তর:


17

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

সেশন ম্যানেজমেন্টের জন্য, দ্রুপাল পিএইচপি সেশন হ্যান্ডলিংয়ে প্লাগ ইন করে এটির নিজস্ব হ্যান্ডলারগুলি নিবন্ধ করুন। ড্রুপাল সেশন ব্যাকএন্ড নিজেই প্লাগযোগ্য, আপনি session_incপাওয়া ফাংশনগুলির বিকল্প বাস্তবায়ন সরবরাহকারী কোনও ফাইলের পথে চলকটি সেট করতে পারেন includes/session.incমেমক্যাশে মডিউল ব্যবহার অধিবেশন সঞ্চয় করতে memcached হবে।

রেফারেন্সের জন্য, ওপেনআইডি মডিউল সফল প্রমাণীকরণ হ্যান্ডেল করে openid_authentication()যার মধ্যে নিজেই উপস্থিত থাকে এবং ব্যবহারকারী লগইন ফর্মটিকে হ্যান্ডলারের জমা দেয় (যেমন। user_login_submit()) Call এই সাবমিট হ্যান্ডলারটি নিজেই সহজ, এটি সাফল্যের সাথে প্রমাণীকৃত ব্যবহারকারীকে user_load()বিশ্বব্যাপী $userভেরিয়েবলের সাথে লোড করে , তারপরে user_login_finalize()যা হ্যান্ডেল সেশনটি কল করে, userসারণীতে লগইন টাইমস্ট্যাম্প এবং hook_user_login()প্রয়োগগুলি অনুরোধ করে।

অন্য বিকল্পটি হ'ল user_external_login_register()ফাংশনটি ব্যবহার । ফাংশনটি একটি বাহ্যিক ব্যবহারকারীকে লগ ইন করবে needed প্রয়োজনে এটি স্থানীয় ব্যবহারকারীও তৈরি করে। আপনি স্থানীয় ব্যবহারকারী তৈরি উপর আরো নিয়ন্ত্রণ প্রয়োজন হয়, তাহলে আপনি সবসময় ব্যবহার করতে পারেন user_save(), user_set_authmaps(), user_login_submit()এবং user_external_load()থেকে কাস্টম কল ব্যবহার user_external_login_register()কি করা দরকার এর ফর্মা হিসেবে।


2
এটি বেশ স্পট অন। বাহ্যিক ব্যবহারকারীদের লগ ইন করার ড্রুপাল দিকটি আশ্চর্যরকমভাবে সহজ। ভারী উত্তোলন (যদি থাকে) আসলে বাহ্যিক ব্যবস্থার সাথে হস্তক্ষেপ করছে।
এমপিডোনাদিও

@ এমপিডি আমার বিশেষ ক্ষেত্রে বিপরীতটি সন্ধান করছে। বাহ্যিক সিস্টেম = JSON ওয়েব পরিষেবা = তুলনামূলক সহজ স্টাফ। ড্রুপাল আচরণ = অপ্রত্যাশিতভাবে সংস্করণ থেকে সংস্করণে পরিবর্তন করা = জাহান্নামের মতো কঠিন এবং যখন জিনিসগুলি ভেঙে যায় তখন কোনও কার্যকর ডায়াগনস্টিকস নেই।
ট্রেজকাজ

1

ব্যবহারকারীর_অথেনসিটেট () এপি এখানে কাজ করতে পারে।

৩. প্রতিক্রিয়াটি ব্যবহার করে ব্যবহারকারীদের সারণিতে ব্যবহারকারীকে চিহ্নিত করুন এবং পাসওয়ার্ড পরীক্ষা না করেই ব্যবহারকারীর জন্য একটি সেশন তৈরি করুন (এটি ডাবল প্রমাণীকরণের অর্থ হবে)। ডিফল্টরূপে, দ্রুপাল $insecure_session_nameভেরিয়েবলের নাম এবং মান সহ একটি কুকি সেট করে $sid। আমি চাই দ্রুপাল এখানে কুকি সেট না করে পরিবর্তে এসএসও সার্ভারে ভেরিয়েবলের মান প্রেরণ করুন।

সম্পাদনা: একবার এসএসও সার্ভার ব্যবহারকারীর লগইন করতে এই API টি সত্য ব্যবহার করে ফিরে আসে যা স্বয়ংক্রিয়ভাবে আপনার জন্য সেশনের যত্ন নেবে। আপনি user_authenticate()নিজের দ্বারা সেশন তৈরি করার পরিবর্তে এটি ব্যবহার করা ভাল বলে আমি মনে করি । বৈধ পি-অ্যাসওয়ার্ড সরবরাহ করা না হওয়া পর্যন্ত এটি কোনও সমস্যা এমনকি তার দ্বিগুণ প্রমাণীকরণেরও দরকার নেই।

৪. সম্পর্কে নিশ্চিত নন আপনি কি উভয় ডোমেনে কুকি দৃশ্যমান থাকতে চান? যদি তাই হয় তবে সেটিংসে। পিএফপি $cookie_domainডোমেনে আরম্ভ করুন। তারপরে সাবসিটে কুকিগুলি প্যারেন্ট সাইটে পাওয়া যাবে।


আপনার প্রতিক্রিয়ার জন্য আপনাকে ধন্যবাদ. আমি ব্যবহার করতে পারছি না user_authenticateকারণ, ড্রুপাল সাইটে প্রমাণীকরণের প্রয়োজন হয় না। আমি কল করে drupal_session_generate()এবং drupal_session_regenerate()সেশন.ইনক ফাইল থেকে সেশনটি তৈরি করতে পারি । আপনি কুকির প্রয়োজনীয়তা সম্পর্কে এটি ঠিক পেয়েছেন .. দয়া করে সম্পাদনাটি দেখুন।
অজিতস

@ লিঙ্কটি সেই লিঙ্কটি পরীক্ষা করুন। ব্যবহারকারীর নাম প্রমাণীকৃত আপনাকে ব্যবহারকারীর দেওয়া ব্যবহারকারী নাম এবং পাসওয়ার্ড সঠিকভাবে লগইন করতে দেয়। পদক্ষেপ 3 এ যখন আপনি SSO সার্ভারে ব্যবহারকারীর নাম এবং পাস সঠিক কিনা তা যাচাই করেন তবে ব্যবহারকারীকে লগইন করতে এই API টি ব্যবহার করুন। তবে আপনার ড্রুপালে পাসওয়ার্ড থাকা উচিত। এটি করা হ্যাকিং কোরের চেয়ে অনেক সহজ করে তুলবে।
গুডএসপিএনপি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.