JSON ওয়েব টোকেন

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

স্মার্টফোন এবং ব্রাউজারের মতো কম নির্ভরযোগ্য পরিবেশ থেকে এপিআই মেথড কল করার জন্য ফ্লিট ইঞ্জিনে জেএসওএন ওয়েব টোকেন (জেডব্লিউটি) ব্যবহার করা আবশ্যক।

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

মূল বিবরণ

এপিআই কী-এর বিপরীতে, জেডব্লিউটি স্বল্পস্থায়ী এবং শুধুমাত্র সেইসব অপারেশনের মধ্যেই সীমাবদ্ধ থাকে যা সম্পাদনের জন্য রোলটি অনুমোদিত। জেডব্লিউটি সম্পর্কে আরও তথ্যের জন্য, উইকিপিডিয়ায় JSON Web Tokens দেখুন। অ্যাক্সেস রোল সম্পর্কে বিস্তারিত জানতে, এই গাইডের Service account roles অংশটি দেখুন।

JWT উপাদান

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

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

JWT হেডার ফিল্ড

মাঠ

বর্ণনা

অ্যালগ

ব্যবহারযোগ্য অ্যালগরিদম। `RS256`।

টাইপ

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

বাচ্চা

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

JWT ক্ষেত্র দাবি করে

মাঠ

বর্ণনা

আইএসএস

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

উপ

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

অড

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

আইএটি

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

অভিজ্ঞতা

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

অনুমোদন

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

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

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

অথবা

"taskids": ["*"]

ফ্লিট ইঞ্জিন JWT দাবি

ফ্লিট ইঞ্জিন প্রাইভেট ক্লেইম ব্যবহার করে। প্রাইভেট ক্লেইম ব্যবহারের মাধ্যমে এটি নিশ্চিত করা হয় যে, শুধুমাত্র অনুমোদিত ক্লায়েন্টরাই তাদের নিজেদের ডেটা অ্যাক্সেস করতে পারবে।

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

ফ্লিট ইঞ্জিন নিম্নলিখিত ব্যক্তিগত দাবিগুলো ব্যবহার করে:

চাহিদা অনুযায়ী ভ্রমণ

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

নির্ধারিত কাজ

  • deliveryvehicleid

    প্রতিটি ডেলিভারি গাড়ির জন্য আলাদা এপিআই কল করার সময় ব্যবহার করুন।

  • taskid

    প্রতি-টাস্ক এপিআই কল করার সময় ব্যবহার করুন।

  • taskids

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

  • trackingid

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

এরপর কী?