JSON ওয়েব টোকেন (JWT) হল একটি ওপেন ওয়েব স্ট্যান্ডার্ড যা ক্লায়েন্ট ও সার্ভারের মধ্যে তথ্য আদানপ্রদান যাচাই ও অনুমোদন করার জন্য ব্যবহার করা হয়। অ্যাপের কোনও ব্যবহারকারী উপযুক্ত ভূমিকা সংক্রান্ত ক্রেডেনশিয়াল দিয়ে প্রথমবার সাইন-ইন করলে, সার্ভার পরবর্তী অনুরোধের সাথে ব্যবহার করার জন্য একটি এনকোড করা, ডিজিটাল স্বাক্ষর করা JWT তৈরি করে এবং ফেরত পাঠায়। এই প্রসেস ব্যবহারকারীকে যাচাই করে এবং তার অ্যাকাউন্টের ভূমিকার উপর ভিত্তি করে রুট, পরিষেবা ও রিসোর্স অ্যাক্সেস করার অনুমতি দেয়।
কম-বিশ্বস্ত পরিবেশ: স্মার্টফোন এবং ব্রাউজার থেকে API মেথড কলের জন্য Fleet Engine-এর JSON ওয়েব টোকেন (JWTs) ব্যবহার করা প্রয়োজন।
আপনার সার্ভারে একটি JWT তৈরি হয়, সেটি সাইন ও এনক্রিপ্ট করা হয় এবং পরবর্তী সার্ভার ইন্টার্যাকশনের জন্য ক্লায়েন্টের কাছে পাঠানো হয়, যতক্ষণ না এটির মেয়াদ শেষ হয় বা এটি আর বৈধ থাকে না।
গুরুত্বপূর্ণ বিবরণ
- Fleet Engine-এর সাথে যাচাই ও অনুমোদন করতে অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল ব্যবহার করুন।
- JWT-তে সাইন করতে উপযুক্ত পরিষেবা অ্যাকাউন্ট ব্যবহার করুন। Fleet Engine-এর প্রাথমিক তথ্য থেকে Fleet Engine serviceaccount-এর ভূমিকা দেখুন।
API কী-এর মতো নয়, JWT-এর মেয়াদ কম হয় এবং এটি শুধুমাত্র সেইসব অপারেশনকে সীমাবদ্ধ করে যেগুলি সম্পাদন করার জন্য ভূমিকাটি অনুমোদিত। JWT সম্পর্কে আরও জানতে, Wikipedia-তে JSON ওয়েব টোকেন দেখুন। অ্যাক্সেস ভূমিকা সম্পর্কে বিস্তারিত জানতে, এই গাইডে পরিষেবা অ্যাকাউন্ট ভূমিকা দেখুন।
JWT এলিমেন্ট
JWT-তে একটি হেডার ও দাবি সংক্রান্ত বিভাগ থাকে। হেডার বিভাগে পরিষেবা অ্যাকাউন্ট থেকে পাওয়া ব্যক্তিগত কী এবং এনক্রিপশন অ্যালগরিদমের মতো তথ্য থাকে। দাবি বিভাগে JWT-এর তৈরি করার সময়, লাইভ থাকার সময়, JWT যে পরিষেবা অ্যাক্সেস করার দাবি করে এবং অ্যাক্সেস স্কোপ করার জন্য অন্যান্য অনুমোদনের তথ্যের মতো তথ্য থাকে; যেমন, ডেলিভারি গাড়ির আইডি।
নিম্নলিখিত সারণীতে JWT ফিল্ড সম্পর্কে সাধারণ বর্ণনামূলক বিবরণ দেওয়া হয়েছে, সেইসাথে আপনার Fleet Engine ক্লাউড প্রোজেক্টে এইসব ফিল্ডের ভ্যালু কোথায় পাবেন সেই সম্পর্কে নির্দিষ্ট তথ্য দেওয়া হয়েছে।
ফিল্ড |
বিবরণ |
|---|---|
অ্যালগ |
যে অ্যালগরিদম ব্যবহার করতে হবে। `RS256`। |
typ |
টোকেনের ধরন। `JWT`. |
শিশু |
আপনার পরিষেবা অ্যাকাউন্টের ব্যক্তিগত কী আইডি। আপনার পরিষেবা অ্যাকাউন্টের JSON ফাইলের
|
ফিল্ড |
বিবরণ |
|---|---|
iss |
আপনার পরিষেবা অ্যাকাউন্টের ইমেল আইডি, যা আপনার পরিষেবা অ্যাকাউন্টের JSON ফাইলের
|
সাব |
আপনার পরিষেবা অ্যাকাউন্টের ইমেল আইডি, যা আপনার পরিষেবা অ্যাকাউন্টের JSON ফাইলের
|
অস্ট্রেলিয়ান ডলার (AUD) |
আপনার পরিষেবা অ্যাকাউন্টের |
iat |
JWT তৈরি করার টাইমস্ট্যাম্প, 00:00:00 |
এক্সপ |
JWT-এর মেয়াদ শেষ হওয়ার টাইমস্ট্যাম্প, |
অনুমোদন |
ব্যবহারের উপর নির্ভর করে, এতে taskids উল্লেখ করলে, অনুমোদনের স্কোপ অবশ্যই নিম্নলিখিত ফর্মগুলির মধ্যে একটি অ্যারে হতে হবে: "taskids": ["task_id_one","task_id_two"]
অথবা "taskids": ["*"] |
Fleet Engine JWT ক্লেম
Fleet Engine ব্যক্তিগত দাবি ব্যবহার করে। ব্যক্তিগত দাবি ব্যবহার করলে, শুধু অনুমোদিত ক্লায়েন্টই তার নিজস্ব ডেটা অ্যাক্সেস করতে পারবে।
যেমন, আপনার সার্ভার কোনও ড্রাইভারের মোবাইল ডিভাইসের জন্য JSON ওয়েব টোকেন ইস্যু করলে,
এতে হয় vehicleid দাবি অথবা
deliveryvehicleid দাবি থাকতে হবে, যার সাথে ড্রাইভারের গাড়ির আইডির ভ্যালুও থাকবে। তারপর,
ড্রাইভারের ভূমিকার উপর নির্ভর করে, JWT শুধুমাত্র নির্দিষ্ট গাড়ির আইডির জন্য অ্যাক্সেস চালু করে
এবং অন্য কোনও ইচ্ছামতো গাড়ির আইডির জন্য নয়।
Fleet Engine নিম্নলিখিত ব্যক্তিগত দাবি ব্যবহার করে:
চাহিদা মতো ট্রিপ
-
vehicleid:- ট্রিপ বা গাড়ি, যেটির উপরেই কাজ করা হোক না কেন, Driver SDK সবসময় এই দাবি ব্যবহার করে। ফ্লিট ইঞ্জিন ব্যাকএন্ড নিশ্চিত করে যে পরিবর্তন করার আগে গাড়িটি অনুরোধ করা ট্রিপের সাথে যুক্ত আছে।
- JWT-তে গাড়ি ও ট্রিপ সংক্রান্ত অপারেশন, দুটিই কভার করা যেতে পারে, এমনকি প্রয়োজন না থাকলেও, যার ফলে JWT সাইনিং প্রয়োগ করা সহজ হতে পারে।
-
tripid:- Consumer SDK সবসময় এই দাবি ব্যবহার করে।
- JWT-তে গাড়ি ও ট্রিপ সংক্রান্ত অপারেশন, দুটিই কভার করা যেতে পারে, এমনকি প্রয়োজন না থাকলেও, যা টোকেন সাইনিং প্রয়োগ করার পদ্ধতিকে আরও সহজ করে তুলতে পারে।
শিডিউল করা টাস্ক
-
deliveryvehicleidপ্রতি-ডেলিভারি-গাড়ি API কল করার সময় ব্যবহার করুন।
-
taskidপ্রতিটি টাস্কের জন্য API কল করার সময় ব্যবহার করুন।
-
taskidsBatchCreateTasksAPI-এ কল করার সময় ব্যবহার করুন। এই দাবিটি অবশ্যই অ্যারে ফর্মে থাকতে হবে, এবং অ্যারেতে অনুরোধটি সম্পূর্ণ করার জন্য প্রয়োজনীয় সমস্ত টাস্ক আইডি থাকতে হবে।delivervehicleid,trackingidবাtaskidসংক্রান্ত দাবি অন্তর্ভুক্ত করবেন না। -
trackingidGetTaskTrackingInfoAPI-এ কল করার সময় ব্যবহার করুন। দাবিটি অবশ্যই অনুরোধে থাকা ট্র্যাকিং আইডির সাথে মিলতে হবে।delivervehicleid,taskidবাtaskidsসংক্রান্ত দাবি অন্তর্ভুক্ত করবেন না।
এর পরে কী করতে হবে
- সম্পূর্ণ যাচাইকরণ ফ্লো বুঝতে Fleet Engine-এর নিরাপত্তা ডিজাইন সম্পর্কে পড়ুন।
- আপনার সার্ভার থেকে কীভাবে JSON ওয়েব টোকেন ইস্যু করবেন তা জানুন।