তৃতীয় পক্ষের সাইটের সাথে একক সাইন-অনের জন্য API তৈরি করুন


13

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

অন্য সাইটটির কোনও ধরণের API এর মাধ্যমে ব্যবহারকারীদের আমার সাইট থেকে প্রমাণীকরণ করা দরকার।

আমি কোথায় শুরু করব তা নিশ্চিত নই, তবে আমার বোধগম্যতা এটি আমার চেয়ে স্মার্ট লোকেরা খুঁজে পেয়েছে। আগাম ধন্যবাদ!


1
কোন ধরণের এপিআই কল প্রয়োজন হবে? আপনি কি করতে চেষ্টা করছেন? আপনি কি ডাব্লুপির এক্সএমএল-আরপিসি সমর্থন ( কোডেক্স.ওয়ার্ডপ্রেস.আর. / এক্সএমএল- আরপিসি_সপোর্ট ) দেখেছেন ?
আনু

অন্যান্য সাইটের আমার ডাব্লুপি সাইট থেকে ব্যবহারকারীদের যাচাই / প্রমাণীকরণ করা দরকার।
এমারসন্থিস

উত্তর:


16

ক্রস-সাইট স্ক্রিপ্টিং সমস্যা

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

একটি এপিআই এন্ডপয়েন্ট পয়েন্ট তৈরি করুন

আমি এই নিবন্ধটি এখানে লিখেছিলাম: চেক করুন http://coderrr.com/create-an-api-endPoint-in-wordpress/

এছাড়াও আপনি কোডটি এখানে প্রদর্শন করতে পারবেন: https://gist.github.com/2982319

আপনার নিজের অ্যাপ্লিকেশন প্রয়োজনীয়তার জন্য আপনার যুক্তিটি বের করতে হবে, তবে এটি আপনাকে এমন একটি এন্ডপয়েন্ট তৈরি করতে সহায়তা করবে যেখানে আপনি ওয়ার্ডপ্রেস দিক থেকে যা চান তা পরিবেশন করতে পারবেন।

যেহেতু আপনি ওয়ার্ডপ্রেসকে প্রমাণীকরণ সাইট হিসাবে ব্যবহার করছেন তাই আপনি is_user_logged_in () এর মতো একটি চেক ব্যবহার করতে পারেন। যদি তারা লগ ইন করে থাকে তবে কোনও ব্যবহারকারীর তৃতীয় পক্ষের কাছে তাদের প্রয়োজনীয় তথ্যের সাথে অবজেক্টটি ফিরিয়ে দিন।

তৃতীয় পক্ষ থেকে লগ ইন করা

তৃতীয় পক্ষ থেকে, তারা আপনার লগইন পৃষ্ঠায় লিড করতে পারে নিরবিচ্ছিন্ন অভিজ্ঞতার জন্য redirect_to ক্যোয়ারী ভার ব্যবহার করে। একবার লগ ইন হয়ে গেলে এটি তাদের তৃতীয় পক্ষের সাইটে ফেরত পাঠাবে।

http://sub.yourdomain.com/wp-login.php?redirect_to=http%3A%2F%2Fwww.third-party-domain.com

রিমোট লগইন

আপনার যদি কোনও তৃতীয় পক্ষের সাইট থেকে ব্যবহারকারীদের ওয়ার্ডপ্রেসে লগইন করতে হয় তবে আপনি এই সাইটে তালিকাভুক্ত কয়েকটি সাধারণ ডাব্লুপি ফাংশন ব্যবহার করতে পারেন: http://kuttler.eu/code/log-in-a-wordpress-user-programmatically/

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

তৃতীয় পক্ষ একটি টাইমস্ট্যাম্প এবং একটি ভাগ করা গোপনের দ্বারা উত্পাদিত একটি টোকেন সহ অনুরোধ পাঠায়:

$shared_secret = 'foobar'; //do not send this to the API endpoint
$timestamp = time();
$token = md5($shared_secret.$time_stamp);

ওয়ার্ডপ্রেস ইনস্টলেশন অনুরোধটি গ্রহণ করে:

$shared_secret = 'foobar';
$timestamp = esc_attr($_GET['timestamp']);

if((time() - $timestamp) > 30) # Threshold is 30 seconds
    //do something here - TOKEN expired!

$token = md5($share_secret.$timestamp);
$token_to_check = esc_attr($_GET);

if($token == $token_to_check)
    //authenticated!

মোটামুটি নিশ্চিত যে তৃতীয় পক্ষের সফ্টওয়্যারটি ডাব্লুপি'র সাথে কোনও সম্পর্কযুক্ত নয়, তাই এটি অবশ্যই একক সাইন ইন, তবে ডাব্লুপি প্রমাণীকরণ প্রদানকারী হিসাবে অভিনয় করে।
আনু

@ অানু: এটা ঠিক।
এমারসন্থিস

@ ব্রায়ান: আমি একাধিক-সাইট ইনস্টলেশনতে যেতে আগ্রহী, তবে আপনি কুকিজ সম্পর্কে যে বক্তব্যটি করেছেন তা আমি পুরোপুরি বুঝতে পারি না। তৃতীয় পক্ষের সফ্টওয়্যারটির যা যা হওয়ার দরকার তা হ'ল এটির সত্যতা যাচাই করা দরকার যে এর ব্যবহারকারীটি আসলে আমার ব্যবহারকারীদের মধ্যে একজন। সফ্টওয়্যার অন্যথায় স্বাবলম্বী এবং এর নিজস্ব কুকিজ বা যা কিছু সরবরাহ করতে পারে।
এমারসন্থিস

@ এমারসন এখনই দেখছি। বিভ্রান্তির জন্য দুঃখিত. আপনি তৈরি করা এন্ডপয়েন্ট আইডিয়াটি ব্যবহার করতে পারেন এবং প্রমাণীকরণের জন্য ব্যবহারকারীর মেটাতে ভাগ করা টোকেন ব্যবহার করতে পারেন। ব্যবহারকারী উপস্থিত থাকলে তৃতীয় পক্ষের কাছে একটি জেএসএন প্রতিক্রিয়া ফিরিয়ে দিন।
ব্রায়ান ফেগটার

1
খুব সুন্দর সমাধান। অ্যাপ্লিকেশনগুলি বিভিন্ন সার্ভারে ইনস্টল করা থাকলে এবং কোনও কারণে প্রতিটি মেশিনের সময় আলাদা থাকলে সমস্যা হতে পারে। আমি counterপরিবর্তে ব্যবহার করার time()অনুরোধ করব এবং অনুরোধটি দিয়ে এটি পাস করুন। উভয় পক্ষই শেষ কাউন্টারটি পাস করে রাখে, এবং এপিআই যখন নতুন কাউন্টারটির সাথে একটি অনুরোধ পেয়ে থাকে তখন এটি যাচাই করে যে নতুনটি সর্বশেষের চেয়ে বড়। এইভাবে বিলম্ব কোনও ক্ষতি করতে পারে না।
গুয়ালনি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.