কীভাবে: ওয়ার্ডপ্রেস এপিআই-তে JWT- অনুমোদনের অনুরোধগুলি করুন


17

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


3
আপনার এটিকে একটি প্রশ্ন হিসাবে ফর্ম্যাট করা উচিত, তারপরে সমাধানটি আসল উত্তর হিসাবে পোস্ট করুন। অন্যথায় এটি একটি উত্তরহীন প্রশ্নের মতো দেখাচ্ছে।
জ্যাকব পিটি

উত্তর:


19

কেন জেডাব্লুটি প্রমাণীকরণ

আমি এমন একটি সাইট তৈরি করছি যা ওয়ার্ডপ্রেসটিকে ব্যাক-এন্ড হিসাবে এবং ফ্রন্ট-এন্ড হিসাবে একটি প্রতিক্রিয়া + রেডাক্স অ্যাপ্লিকেশন ব্যবহার করছি, তাই আমি ওয়ার্ডপ্রেস API তে অনুরোধ করে ফ্রন্ট-এন্ডে সমস্ত সামগ্রী টানছি। কিছু অনুরোধ (প্রধানত, POST অনুরোধগুলি) অবশ্যই প্রমানিত হতে হবে, যা আমি যখন JWT জুড়ে এসেছি।

আমাদের কি দরকার

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

ওয়ার্ডপ্রেস ইনস্টলেশনের মূল ফোল্ডারে অন্তর্ভুক্ত .htaccess ফাইলটিতে আমাদের নিম্নলিখিত লাইনগুলি যুক্ত করতে হবে:

RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

ওয়ার্ডপ্রেস ইনস্টলেশনের রুট ফোল্ডারে অন্তর্ভুক্ত wp-config.php ফাইলটিতে, আমাদের এই লাইনগুলি যুক্ত করতে হবে:

define('JWT_AUTH_SECRET_KEY', 'your-top-secret-key'); // Replace 'your-top-secret-key' with an actual secret key.
define('JWT_AUTH_CORS_ENABLE', true);

জেডাব্লুটি পাওয়া যায় কিনা তা পরীক্ষা করে দেখুন

আমরা এখন JWT ব্যবহার করতে পারি তা যাচাই করতে, পোস্টম্যান ফায়ার আপ করতে এবং ওয়ার্ডপ্রেস এপিআইয়ের ডিফল্ট 'সূচক' তে একটি অনুরোধ জানাতে পারি:

http://example.com/wp-json/

কয়েকটি নতুন পয়েন্ট, যেমন /jwt-auth/v1এবং এপিআইতে /jwt-auth/v1/tokenযুক্ত করা উচিত ছিল। আপনি যদি উপরের অনুরোধের প্রতিক্রিয়াতে সেগুলি খুঁজে পেতে পারেন তবে এর অর্থ জেডাব্লুটিটি এখন উপলব্ধ।

জেডাব্লুটি টোকেন পাচ্ছেন

আসুন এই মুহুর্তের জন্য পোস্টম্যানে থাকুন এবং আসুন আমরা ওয়ার্ডপ্রেস এপিআই-তে একটি টোকেনের অনুরোধ করব:

http://example.com/wp-json/jwt-auth/v1/token

প্রতিক্রিয়াতে জেডাব্লুটি টোকেন থাকবে, যা একটি এনক্রিপ্ট করা কী যা দেখতে এরকম কিছু দেখাচ্ছে:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3Q6ODg4OFwvZm90b3Jvb20tbmV4dCIsImlhdCI6MTUyMjU5NzQ1MiwibmJmIjoxNTIyNTk3NDUyLCJleHAiOjE1MjMyMDIyNTIsImRhdGEiOnsidXNlciI6eyJpZCI6IjEifX19.hxaaT9iowAX1Xf8RUM42OwbP7QgRNxux8eTtKhWvEUM

একটি সত্যায়িত অনুরোধ করা

আসুন JWT- এর সাথে একটি অনুমোদনের অনুরোধের উদাহরণ হিসাবে 300 এর ID সহ একটি পোস্টের শিরোনাম পরিবর্তন করার চেষ্টা করি।

পোস্টম্যানে, পদ্ধতি হিসাবে POST চয়ন করুন এবং নিম্নলিখিত প্রান্তটি টাইপ করুন:

http://example.com/wp-json/wp/v2/posts/300

অনুমোদনের ট্যাবে কোনও লেখক বেছে নিন না এবং শিরোনাম ট্যাবে নিম্নলিখিতটি যুক্ত করুন:

'Content-type': 'application/json', 
'Authorization': 'Bearer jwtToken' // Replace jwtToken with the actual token (the encrypted key above)

অবশেষে, বডি ট্যাবে, কাঁচা এবং জেএসএন (অ্যাপ্লিকেশন / জসন) বিকল্পগুলি নির্বাচন করুন, তারপরে অপশনগুলির ঠিক নীচে সম্পাদকটিতে নিম্নলিখিত টাইপ করুন:

{ "title": "YES! Authenticated requests with JWT work" }

এখন আপনি SEND এ আঘাত করতে পারেন। আমাদের অনুরোধ করা পোস্টটি সম্পর্কিত সমস্ত ডেটা সহ প্রতিক্রিয়া ট্যাবটি দেখুন: শিরোনাম কীটির মান এখন হওয়া উচিতYES! Authenticated requests with JWT work


2
এমন কলগুলির মধ্যে আপনি কীভাবে পার্থক্য করবেন যা অবশ্যই প্রমাণীকরণযোগ্য হবে এবং যেমনগুলির পিছনে শেষের দিকে প্রমাণীকরণ করতে হবে না?
uruk

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

@chris আপনি আপনার এন্ড পয়েন্ট অ অনুমোদিত অনুরোধ থেকে দূরে আড়াল করা করতে চান, তাই মত নামস্থান jwt_auth অধীনে তাদের যোগ, অর্থাত্ এমন: register_rest_route( 'jwt-auth/v1', 'your_custom_endpoint ... । Jwt-auth / এর অধীনে যে কোনও কিছুর অনুমোদনের প্রয়োজন হবে
অ্যাথক্সক্স

4

@ গ্রাজিয়ানোদেবের উত্তর পরিপূরক করা, আপনি এইভাবে সিআরএল ব্যবহার করে আপনার অনুমোদনের টোকেন পাবেন:

/**
*   Generate a JWT token for future API calls to WordPress
*/
private function getToken() {
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL,'https://site.localhost/wp-json/jwt-auth/v1/token');
    curl_setopt($ch, CURLOPT_POST, 1);

    # Admin credentials here
    curl_setopt($ch, CURLOPT_POSTFIELDS, "username=admin&password=Str0ngPass"); 

    // receive server response ...
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $server_output = curl_exec ($ch);
    if ($server_output === false) {
        die('Error getting JWT token on WordPress for API integration.');
    }
    $server_output = json_decode($server_output);

    if ($server_output === null && json_last_error() !== JSON_ERROR_NONE) {
        die('Invalid response getting JWT token on WordPress for API integration.');
    }

    if (!empty($server_output->token)) {
        $this->token = $server_output->token; # Token is here
        curl_close ($ch);
        return true;
    } else {
        die('Invalid response getting JWT token on WordPress for API integration.');
    }
    return false;
}

এর পরে, শিরোনাম দিয়ে আপনার অনুরোধগুলি প্রেরণ করুন: "অনুমোদন: বহনকারী $ টোকেন"

যেখানে $ টোকেনটি টোকনটি উপরের getToken () ফাংশন দ্বারা ফিরে আসে।

কেবলমাত্র উপরের টোকেনের সাহায্যে API টি অ্যাক্সেসকে সীমাবদ্ধ করতে আমি ব্যক্তিগতভাবে " REST API অক্ষম করুন এবং JWT / OAuth প্রমাণীকরণ প্রয়োজন " প্লাগইনটি ব্যক্তিগতভাবে ব্যবহার করি ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.