JSON ওয়েব টোকেন (JWT) হলো একটি উন্মুক্ত ওয়েব স্ট্যান্ডার্ড যা ক্লায়েন্ট এবং সার্ভারের মধ্যে তথ্য আদান-প্রদানের প্রমাণীকরণ এবং অনুমোদনের জন্য ব্যবহৃত হয়। যখন কোনো অ্যাপ ব্যবহারকারী উপযুক্ত রোল ক্রেডেনশিয়াল দিয়ে প্রথমবার সাইন ইন করেন, তখন সার্ভার পরবর্তী অনুরোধগুলোর জন্য একটি এনকোডেড ও ডিজিটালভাবে স্বাক্ষরিত JWT তৈরি করে ফেরত পাঠায়। এই প্রক্রিয়াটি ব্যবহারকারীকে প্রমাণীকরণের পাশাপাশি তার অ্যাকাউন্টের রোলের উপর ভিত্তি করে রাউট, সার্ভিস এবং রিসোর্স অ্যাক্সেস করার অনুমোদন দেয়।
স্মার্টফোন এবং ব্রাউজারের মতো কম নির্ভরযোগ্য পরিবেশ থেকে এপিআই মেথড কল করার জন্য ফ্লিট ইঞ্জিনে জেএসওএন ওয়েব টোকেন (জেডব্লিউটি) ব্যবহার করা আবশ্যক।
একটি JWT আপনার সার্ভারে তৈরি হয়, স্বাক্ষরিত ও এনক্রিপ্ট করা হয় এবং এর মেয়াদ শেষ না হওয়া পর্যন্ত বা এটি অকার্যকর না হওয়া পর্যন্ত পরবর্তী সার্ভার ইন্টারঅ্যাকশনের জন্য ক্লায়েন্টের কাছে পাঠানো হয়।
মূল বিবরণ
- ফ্লিট ইঞ্জিনের সাথে প্রমাণীকরণ এবং অনুমোদনের জন্য অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল ব্যবহার করুন।
- JWT-তে স্বাক্ষর করার জন্য একটি উপযুক্ত সার্ভিস অ্যাকাউন্ট ব্যবহার করুন। ফ্লিট ইঞ্জিন বেসিকস -এ ফ্লিট ইঞ্জিন সার্ভিস অ্যাকাউন্টের ভূমিকাগুলো দেখুন।
এপিআই কী-এর বিপরীতে, জেডব্লিউটি স্বল্পস্থায়ী এবং শুধুমাত্র সেইসব অপারেশনের মধ্যেই সীমাবদ্ধ থাকে যা সম্পাদনের জন্য রোলটি অনুমোদিত। জেডব্লিউটি সম্পর্কে আরও তথ্যের জন্য, উইকিপিডিয়ায় JSON Web Tokens দেখুন। অ্যাক্সেস রোল সম্পর্কে বিস্তারিত জানতে, এই গাইডের Service account roles অংশটি দেখুন।
JWT উপাদান
JWT-তে একটি হেডার এবং একটি ক্লেইম সেকশন থাকে। হেডার সেকশনে সার্ভিস অ্যাকাউন্ট থেকে প্রাপ্ত প্রাইভেট কী এবং এনক্রিপশন অ্যালগরিদমের মতো তথ্য থাকে। ক্লেইম সেকশনে JWT-এর তৈরির সময়, টাইম টু লিভ, যে সার্ভিসগুলোতে JWT অ্যাক্সেস দাবি করে এবং অ্যাক্সেসের পরিধি নির্ধারণের জন্য অন্যান্য অনুমোদনমূলক তথ্য, যেমন—ডেলিভারি ভেহিকেল আইডি, ইত্যাদি থাকে।
নিম্নলিখিত সারণিতে সাধারণভাবে JWT ফিল্ডগুলো সম্পর্কে বিশদ বিবরণ দেওয়া হয়েছে, সেইসাথে আপনার ফ্লিট ইঞ্জিন ক্লাউড প্রোজেক্টে এই ফিল্ডগুলোর মান কোথায় খুঁজে পাবেন সে সম্পর্কেও নির্দিষ্ট তথ্য রয়েছে।
মাঠ | বর্ণনা |
|---|---|
অ্যালগ | ব্যবহারযোগ্য অ্যালগরিদম। `RS256`। |
টাইপ | টোকেনের ধরণ। `JWT`। |
বাচ্চা | আপনার সার্ভিস অ্যাকাউন্টের প্রাইভেট কী আইডি। আপনি এই মানটি আপনার সার্ভিস অ্যাকাউন্ট JSON ফাইলের |
মাঠ | বর্ণনা |
|---|---|
আইএসএস | আপনার সার্ভিস অ্যাকাউন্টের ইমেল ঠিকানা, যা আপনার সার্ভিস অ্যাকাউন্ট JSON ফাইলের |
উপ | আপনার সার্ভিস অ্যাকাউন্টের ইমেল ঠিকানা, যা আপনার সার্ভিস অ্যাকাউন্ট JSON ফাইলের |
অড | আপনার পরিষেবা অ্যাকাউন্টের |
আইএটি | JWT তৈরি হওয়ার টাইমস্ট্যাম্প, যা |
অভিজ্ঞতা | JWT-এর মেয়াদ শেষ হওয়ার টাইমস্ট্যাম্প, |
অনুমোদন | ব্যবহারের ধরনের ওপর নির্ভর করে, এতে টাস্কআইডি উল্লেখ করার ক্ষেত্রে, অথরাইজেশন স্কোপ অবশ্যই নিম্নলিখিত ফর্মগুলির মধ্যে যেকোনো একটিতে একটি অ্যারে হতে হবে: "taskids": ["task_id_one","task_id_two"]অথবা "taskids": ["*"] |
ফ্লিট ইঞ্জিন JWT দাবি
ফ্লিট ইঞ্জিন প্রাইভেট ক্লেইম ব্যবহার করে। প্রাইভেট ক্লেইম ব্যবহারের মাধ্যমে এটি নিশ্চিত করা হয় যে, শুধুমাত্র অনুমোদিত ক্লায়েন্টরাই তাদের নিজেদের ডেটা অ্যাক্সেস করতে পারবে।
উদাহরণস্বরূপ, যখন আপনার সার্ভার কোনো ড্রাইভারের মোবাইল ডিভাইসের জন্য একটি JSON ওয়েব টোকেন (JWT) ইস্যু করে, তখন তাতে অবশ্যই ` vehicleid ক্লেইম অথবা ` deliveryvehicleid ক্লেইম থাকতে হবে, যার ভ্যালু হবে সেই ড্রাইভারের গাড়ির আইডি। এরপর, ড্রাইভারের ভূমিকার ওপর নির্ভর করে, JWT-গুলো শুধুমাত্র নির্দিষ্ট গাড়ির আইডির জন্যই অ্যাক্সেস সক্ষম করে, অন্য কোনো যথেচ্ছ গাড়ির আইডির জন্য নয়।
ফ্লিট ইঞ্জিন নিম্নলিখিত ব্যক্তিগত দাবিগুলো ব্যবহার করে:
চাহিদা অনুযায়ী ভ্রমণ
-
vehicleid:- ড্রাইভার এসডিকে সর্বদা এই ক্লেইমটি ব্যবহার করে, তা কোনো ট্রিপ বা যানবাহনের ক্ষেত্রেই হোক না কেন। পরিবর্তনটি করার আগে ফ্লিট ইঞ্জিন ব্যাকএন্ড নিশ্চিত করে যে যানবাহনটি অনুরোধ করা ট্রিপটির সাথে যুক্ত আছে।
- JWT বাধ্যতামূলক না হলেও যানবাহন ও ট্রিপ উভয় কার্যক্রমকেই অন্তর্ভুক্ত করতে পারে, যা JWT স্বাক্ষরের বাস্তবায়নকে সহজ করে তুলতে পারে।
-
tripid:- কনজিউমার এসডিকে সর্বদা এই দাবিটি ব্যবহার করে।
- JWT বাধ্যতামূলক না হলেও যানবাহন এবং ট্রিপ উভয় কার্যক্রমই অন্তর্ভুক্ত করতে পারে, যা টোকেন স্বাক্ষরের বাস্তবায়নকে সহজ করে তুলতে পারে।
নির্ধারিত কাজ
deliveryvehicleidপ্রতিটি ডেলিভারি গাড়ির জন্য আলাদা এপিআই কল করার সময় ব্যবহার করুন।
taskidপ্রতি-টাস্ক এপিআই কল করার সময় ব্যবহার করুন।
taskidsBatchCreateTasksAPIকল করার সময় এটি ব্যবহার করুন। এই ক্লেইমটি অবশ্যই অ্যারে আকারে থাকতে হবে এবং অনুরোধটি সম্পন্ন করার জন্য প্রয়োজনীয় সমস্ত টাস্ক আইডি অ্যারেটিতে অন্তর্ভুক্ত থাকতে হবে।delivervehicleid,trackingid, বাtaskidক্লেইমগুলো অন্তর্ভুক্ত করবেন না।trackingidGetTaskTrackingInfoAPIকল করার সময় এটি ব্যবহার করুন। ক্লেইমটি অবশ্যই রিকোয়েস্টের ট্র্যাকিং আইডির সাথে মিলতে হবে।delivervehicleid,taskid, বাtaskidsক্লেইমগুলো অন্তর্ভুক্ত করবেন না।
এরপর কী?
- সম্পূর্ণ প্রমাণীকরণ প্রবাহটি বুঝতে ফ্লিট ইঞ্জিন নিরাপত্তা ডিজাইন সম্পর্কে পড়ুন।
- আপনার সার্ভার থেকে কীভাবে JSON ওয়েব টোকেন ইস্যু করতে হয় তা জানুন।