JSON ওয়েব টোকেন

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

কম-বিশ্বস্ত পরিবেশ: স্মার্টফোন এবং ব্রাউজার থেকে API মেথড কলের জন্য Fleet Engine-এর JSON ওয়েব টোকেন (JWTs) ব্যবহার করা প্রয়োজন।

আপনার সার্ভারে একটি JWT তৈরি হয়, সেটি সাইন ও এনক্রিপ্ট করা হয় এবং ক্লায়েন্টের কাছে পাঠানো হয় যাতে মেয়াদ শেষ না হওয়া বা আর বৈধ না থাকা পর্যন্ত সার্ভারের সাথে ইন্টার‍্যাক্ট করা যায়।

গুরুত্বপূর্ণ বিবরণ

API কী-এর মতো নয়, JWT-এর মেয়াদ কম হয় এবং শুধুমাত্র সেইসব অপারেশনই সীমাবদ্ধ করে যেগুলি সম্পাদন করার জন্য ভূমিকা অনুমোদিত। JWT সম্পর্কে আরও জানতে, Wikipedia-তে JSON ওয়েব টোকেন দেখুন। অ্যাক্সেস ভূমিকা সম্পর্কে বিস্তারিত জানতে, এই গাইডে পরিষেবা অ্যাকাউন্ট ভূমিকা দেখুন।

JWT এলিমেন্ট

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

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

JWT হেডার ফিল্ড

ফিল্ড

বিবরণ

অ্যালগ

যে অ্যালগরিদম ব্যবহার করতে হবে। `RS256`।

typ

টোকেনের ধরন। `JWT`.

শিশু

আপনার পরিষেবা অ্যাকাউন্টের ব্যক্তিগত কী আইডি। আপনার পরিষেবা অ্যাকাউন্ট JSON ফাইলের private_key_id ফিল্ডে এই ভ্যালু খুঁজে পাবেন। সঠিক লেভেলের অনুমতি সহ পরিষেবা অ্যাকাউন্ট থেকে কী ব্যবহার করতে ভুলবেন না।

JWT দাবির ফিল্ড

ফিল্ড

বিবরণ

iss

আপনার পরিষেবা অ্যাকাউন্টের ইমেল আইডি, যা আপনার পরিষেবা অ্যাকাউন্টের JSON ফাইলের client_email ফিল্ডে পাওয়া যাবে।

সাব

আপনার পরিষেবা অ্যাকাউন্টের ইমেল আইডি, যা আপনার পরিষেবা অ্যাকাউন্টের JSON ফাইলের client_email ফিল্ডে পাওয়া যাবে।

অস্ট্রেলিয়ান ডলার (AUD)

আপনার পরিষেবা অ্যাকাউন্টের SERVICE_NAME, এই ক্ষেত্রে https://fleetengine.googleapis.com/

iat

JWT তৈরি করার টাইমস্ট্যাম্প, 00:00:00 UTC, January 1, 1970 থেকে অতিবাহিত হওয়া সেকেন্ডে নির্দিষ্ট করা। স্কিউয়ের জন্য ১০ মিনিট সময় দিন। টাইমস্ট্যাম্প অনেক পুরনো বা অনেক পরের হলে, সার্ভার সমস্যা দেখাতে পারে।

এক্সপ

JWT-এর মেয়াদ শেষ হওয়ার টাইমস্ট্যাম্প, 00:00:00 UTC, January 1, 1970 থেকে অতিবাহিত হওয়া সেকেন্ডে নির্দিষ্ট করা হয়েছে। টাইমস্ট্যাম্পটি এক ঘণ্টার বেশি ভবিষ্যতের হলে অনুরোধটি ব্যর্থ হয়।

অনুমোদন

ব্যবহারের উপর নির্ভর করে, এতে deliveryvehicleid, trackingid, taskid বা taskids থাকতে পারে।

taskids উল্লেখ করলে, অনুমোদনের স্কোপ অবশ্যই নিম্নলিখিত ফর্মগুলির মধ্যে একটি অ্যারে হতে হবে:

"taskids": ["task_id_one","task_id_two"]

অথবা

"taskids": ["*"]

Fleet Engine JWT ক্লেম

Fleet Engine ব্যক্তিগত দাবি ব্যবহার করে। ব্যক্তিগত দাবি ব্যবহার করলে, শুধু অনুমোদিত ক্লায়েন্টই তার নিজস্ব ডেটা অ্যাক্সেস করতে পারবে।

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

Fleet Engine নিম্নলিখিত ব্যক্তিগত দাবি ব্যবহার করে:

চাহিদা মতো ট্রিপ

  • vehicleid:
    • ট্রিপ বা গাড়ি অপারেট করার সময় Driver SDK সবসময় এই দাবি ব্যবহার করে। Fleet Engine ব্যাকএন্ড নিশ্চিত করে যে পরিবর্তন করার আগে গাড়িটি অনুরোধ করা ট্রিপের সাথে যুক্ত আছে।
    • JWT-তে গাড়ি ও ট্রিপ সংক্রান্ত অপারেশন, এমনকি প্রয়োজন না থাকলেও, কভার করা যেতে পারে, যার ফলে JWT সাইনিং প্রয়োগ করা সহজ হতে পারে।
  • tripid:
    • Consumer SDK সবসময় এই দাবি ব্যবহার করে।
    • JWT-তে গাড়ি ও ট্রিপ সংক্রান্ত অপারেশন, দুটিই কভার করা যেতে পারে, এমনকি প্রয়োজন না থাকলেও, যা টোকেন সাইনিং প্রয়োগ করার পদ্ধতিকে সহজ করে তুলতে পারে।

শিডিউল করা টাস্ক

  • deliveryvehicleid

    প্রতি-ডেলিভারি-গাড়ি API কল করার সময় ব্যবহার করুন।

  • taskid

    প্রতিটি টাস্কের জন্য API কল করার সময় ব্যবহার করুন।

  • taskids

    BatchCreateTasksAPI-এ কল করার সময় ব্যবহার করুন। এই দাবিটি অবশ্যই অ্যারে ফর্মে হতে হবে, এবং অ্যারেতে অনুরোধটি সম্পূর্ণ করার জন্য প্রয়োজনীয় সমস্ত টাস্ক আইডি থাকতে হবে। delivervehicleid, trackingid বা taskid দাবি অন্তর্ভুক্ত করবেন না।

  • trackingid

    GetTaskTrackingInfoAPI-এ কল করার সময় ব্যবহার করুন। দাবিটি অবশ্যই অনুরোধে থাকা ট্র্যাকিং আইডির সাথে মিলতে হবে। delivervehicleid, taskid বা taskids দাবি অন্তর্ভুক্ত করবেন না।

এর পরে কী করতে হবে