আপনার ওয়েব ও মোবাইল-ভিত্তিক অ্যাপকে Fleet Engine ডেটা অ্যাক্সেস করার অনুমতি দেওয়ার অংশ হিসেবে কীভাবে JSON ওয়েব টোকেন ইস্যু করতে হয় তা এই ডকুমেন্টে কভার করা হয়েছে। আপনি আগে থেকে এটি না করে থাকলে, Fleet Engine-এ নিরাপত্তা বিভাগের অধীনে JSON ওয়েব টোকেন পড়ুন। Fleet Engine পরিষেবার মাধ্যমে, আপনি নিম্নলিখিত উপায়ে JWT ইস্যু করতে পারবেন:
- অনুমোদন লাইব্রেরি ব্যবহার করুন—আপনার কোডবেস Java-তে লেখা হলে, Google আপনাকে এই পদ্ধতি ব্যবহার করার সাজেশন দেয়। এই লাইব্রেরি পরিষেবার সাথে আপনার প্রয়োজন হতে পারে এমন সব ব্যবহারের ক্ষেত্রে JWT ইস্যু করা ম্যানেজ করে এবং আপনার প্রয়োগকে অনেক সহজ করে তোলে।
- আপনার নিজস্ব JWT তৈরি করুন—আপনি আমাদের JWT লাইব্রেরি ব্যবহার করতে না পারলে, আপনাকে এগুলি আপনার নিজস্ব কোডবেসে তৈরি করতে হবে। এই বিভাগে প্রতিটি পরিস্থিতির জন্য JWT-এর বিভিন্ন উদাহরণ দেওয়া হয়েছে।
JWT কীভাবে কাজ করে
মোবাইল ফোন ও ওয়েব ব্রাউজারের মতো বিশ্বস্ত নয় এমন পরিবেশের জন্য, আপনার ব্যাকএন্ড সার্ভার JWT ইস্যু করে যা এইভাবে কাজ করে:
কম-বিশ্বস্ত পরিবেশে চলা আপনার ক্লায়েন্ট কোড আপনার সার্ভার কোডকে কল করে যা সম্পূর্ণ-বিশ্বস্ত পরিবেশে চলে উপযুক্ত JWT-এর অনুরোধ করতে Fleet Engine-এ পাস করতে।
JWT, পরিষেবা অ্যাকাউন্টের সাথে যুক্ত থাকে, তাই Fleet Engine-এ পাঠানো অনুরোধ JWT-তে স্বাক্ষর করা পরিষেবা অ্যাকাউন্টের সাথে অন্তর্নিহিতভাবে যুক্ত থাকে।
JWT দাবি, ক্লায়েন্ট যেসব রিসোর্স অপারেট করতে পারে, সেগুলিকে আরও সীমাবদ্ধ করে, যেমন নির্দিষ্ট গাড়ি, ট্রিপ বা টাস্ক।
Java-র জন্য অথরাইজেশন লাইব্রেরি ব্যবহার করুন
Java-এর জন্য Fleet Engine অথরাইজেশন লাইব্রেরি ব্যবহার করতে, GitHub রিপোজিটরি দেখুন। লাইব্রেরি Fleet Engine JWT-এর কনস্ট্রাকশন সহজ করে এবং নিরাপদে সেগুলিতে সাইন-ইন করে। এটি নিম্নলিখিত সুবিধা প্রদান করে:
- প্রোজেক্ট ডিপেন্ডেন্সি সংক্রান্ত ঘোষণা
- ডিমান্ড অনুযায়ী ট্রিপ বা শিডিউল করা টাস্কের জন্য সব পরিষেবা অ্যাকাউন্ট ভূমিকার সম্পূর্ণ তালিকা
- ক্রেডেনশিয়াল ফাইল ব্যবহার করা ছাড়া টোকেন সাইন-ইন করার পদ্ধতি, যেমন সার্ভিস অ্যাকাউন্টের ছদ্মবেশ ধারণ করা
- gRPC স্টাব বা Google API Codegen (GAPIC) ক্লায়েন্ট লাইব্রেরি থেকে করা আউটবাউন্ড অনুরোধে স্বাক্ষর করা টোকেন অ্যাটাচ করে
- Fleet Engine ক্লায়েন্ট লাইব্রেরির সাথে সাইনার ইন্টিগ্রেট করার নির্দেশাবলী
আপনি যদি নিজের কোড থেকে JWT ইস্যু করেন
আপনি Java-র জন্য অথরাইজেশন লাইব্রেরি ব্যবহার করতে না পারলে, আপনার নিজস্ব কোডবেসে JWT প্রয়োগ করতে হবে। এই বিভাগে আপনার নিজস্ব টোকেন তৈরি করার জন্য কিছু নির্দেশিকা প্রদান করা হয়েছে। JWT ফিল্ড ও দাবির তালিকা দেখতে, Fleet Engine-এ নিরাপত্তা বিভাগের অধীনে JSON ওয়েব টোকেন দেখুন। Fleet Engine-এর ব্যবহার করা পরিষেবা অ্যাকাউন্টের ভূমিকা সম্পর্কে জানতে পরিষেবা অ্যাকাউন্টের ভূমিকা দেখুন। অন-ডিমান্ড ট্রিপ বা শিডিউল করা টাস্কের জন্য JWT উদাহরণের তালিকা দেখতে নিচের বিভাগটি দেখুন।
সাধারণ নির্দেশিকা
- উপযুক্ত পরিষেবা অ্যাকাউন্ট ও ভূমিকা ব্যবহার করুন। পরিষেবা অ্যাকাউন্ট এবং
সংশ্লিষ্ট ভূমিকা নিশ্চিত করে যে টোকেনের জন্য অনুরোধ করা ব্যবহারকারীকে
টোকেন যে তথ্যে অ্যাক্সেস দেয় তা দেখার জন্য অনুমোদিত। বিশেষত:
- মোবাইল ডিভাইসে পাস করার জন্য JWT সাইন করলে, ড্রাইভার বা কনজিউমার SDK রোলের জন্য পরিষেবা অ্যাকাউন্ট ব্যবহার করুন। অন্যথায়, মোবাইল ডিভাইসটি এমন ডেটা পরিবর্তন এবং অ্যাক্সেস করতে পারে যা তার অ্যাক্সেস করা উচিত নয়।
- প্রিভিলেজড কলের জন্য ব্যবহার করা হবে এমন JWT-তে স্বাক্ষর করার সময়, ADC বা JWT ব্যবহার করার সময় সঠিক Fleet Engine অ্যাডমিন ভূমিকা সহ পরিষেবা অ্যাকাউন্ট ব্যবহার করুন। অন্যথায়, অপারেশনটি ব্যর্থ হয়।
- শুধু তৈরি করা টোকেন শেয়ার করুন। টোকেন তৈরি করার জন্য ব্যবহৃত ক্রেডেনশিয়াল কখনও শেয়ার করবেন না।
- gRPC কলের জন্য, টোকেন অ্যাটাচ করার পদ্ধতি কল করার জন্য ব্যবহৃত ভাষা এবং ফ্রেমওয়ার্কের উপর নির্ভর করে। HTTP কলে টোকেন নির্দিষ্ট করার পদ্ধতি হল, বিয়ারার টোকেন সহ
Authorizationহেডার যোগ করা, যার ভ্যালু হল টোকেন। - মেয়াদ উত্তীর্ণের সময় রিটার্ন করুন। আপনার সার্ভারকে অবশ্যই টোকেনের মেয়াদ শেষ হওয়ার সময় জানাতে হবে, সাধারণত সেকেন্ডে।
- OAuth 2.0 অ্যাক্সেস টোকেন ব্যবহার করার পরিবর্তে টোকেন বিয়ারার হিসেবে সরাসরি JSON তৈরি ও সাইন করতে চাইলে, Identity ডেভেলপার ডকুমেন্টেশনে OAuth ছাড়া পরিষেবা অ্যাকাউন্ট অথরাইজেশন সংক্রান্ত নির্দেশাবলী পড়ুন।
চাহিদা মতো ট্রিপের জন্য
- JWT পেলোড তৈরি করার সময়, অথরাইজেশন বিভাগে অতিরিক্ত দাবি যোগ করুন,
যেখানে
vehicleidবাtripidকী-এর ভ্যালু হিসেবে সেই গাড়ি বা ট্রিপের আইডি সেট করা থাকবে যার জন্য কল করা হচ্ছে।
শিডিউল করা টাস্কের জন্য
- আপনার সার্ভার অন্য API কল করলে, টোকেনেও উপযুক্ত দাবি থাকতে হবে। এর জন্য, আপনি নিম্নলিখিত কাজগুলি করতে পারেন:
- প্রতিটি 'কী'-এর ভ্যালু
*হিসেবে সেট করুন। - ব্যবহারকারীকে সব
taskidsএবংdeliveryvehicleids-এর অ্যাক্সেস দিন। এটি করতে, আপনিtaskidএবংdeliveryvehicleidকী সহ অনুমোদন বিভাগে একটি অতিরিক্ত দাবি যোগ করুন। taskidsদাবিতে অ্যাস্টেরিস্ক (*) ব্যবহার করার সময়, এটি অ্যারের একমাত্র এলিমেন্ট হতে হবে।
- প্রতিটি 'কী'-এর ভ্যালু
অন-ডিমান্ড ট্রিপের জন্য JWT-এর উদাহরণ
আপনি অন-ডিমান্ড ট্রিপ ব্যবহার করলে, এই বিভাগে সাধারণ পরিস্থিতির জন্য JWT-এর উদাহরণ দেওয়া হয়েছে।
ড্রাইভার অ্যাপ অপারেশনের জন্য টোকেনের উদাহরণ
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_driver_service_account"
}
.
{
"iss": "driver@yourgcpproject.iam.gserviceaccount.com",
"sub": "driver@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"authorization": {
"vehicleid": "driver_12345"
}
}
গ্রাহক অ্যাপ অপারেশনের জন্য টোকেনের উদাহরণ
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_consumer_service_account"
}
.
{
"iss": "consumer@yourgcpproject.iam.gserviceaccount.com",
"sub": "consumer@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"authorization": {
"tripid": "trip_54321"
}
}
শিডিউল করা টাস্কের জন্য JWT-এর উদাহরণ
আপনি শিডিউল করা টাস্ক ব্যবহার করলে, এই বিভাগে সাধারণ পরিস্থিতির জন্য JWT-এর উদাহরণ দেওয়া হয়েছে।
ড্রাইভার অ্যাপের জন্য টোকেনের উদাহরণ
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_delivery_driver_service_account"
}
.
{
"iss": "driver@yourgcpproject.iam.gserviceaccount.com",
"sub": "driver@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"authorization": {
"deliveryvehicleid": "driver_12345"
}
}
গ্রাহক অ্যাপের জন্য টোকেনের উদাহরণ
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_delivery_consumer_service_account"
}
.
{
"iss": "consumer@yourgcpproject.iam.gserviceaccount.com",
"sub": "consumer@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"authorization": {
"trackingid": "shipment_12345"
}
}
ফ্লিট অপারেশনের জন্য JWT-এর উদাহরণ
এই বিভাগে ফ্লিট অপারেশনের সাধারণ পরিস্থিতিতে JWT-এর উদাহরণ দেওয়া হয়েছে।
ফ্লিটের সব টাস্ক ও গাড়ি ট্র্যাক করার জন্য টোকেনের উদাহরণ
নিম্নলিখিত উদাহরণটি হল একটি টোকেন যা অপারেটরের ব্যবহার করা ওয়েব-ভিত্তিক অ্যাপ থেকে ফ্লিটের সব টাস্ক ও গাড়ি ট্র্যাক করে। এইসব অপারেশনের জন্য প্রয়োজনীয় অনুমতি ক্লায়েন্ট অ্যাপ্লিকেশনের চেয়ে বেশি। ক্লায়েন্ট-সাইড ইমপ্লিমেন্টেশনের জন্য জাভাস্ক্রিপ্ট ফ্লিট ট্র্যাকিং লাইব্রেরি সেট-আপ করুন যা এই টোকেন ব্যবহার করবে:
Fleet Engine Delivery Fleet ReaderCloud IAM ভূমিকা ব্যবহার করে টোকেন সাইন করুন।
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_consumer_service_account"
}
.
{
"iss": "superuser@yourgcpproject.iam.gserviceaccount.com",
"sub": "superuser@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"scope": "https://www.googleapis.com/auth/xapi",
"authorization": {
"taskid": "*",
"deliveryvehicleid": "*",
}
}
ব্যাকএন্ড সার্ভার অপারেশনের জন্য বিকল্প যাচাইকরণ পদ্ধতি
ব্যাকএন্ড সার্ভার অপারেশন যাচাই করার জন্য Google আপনাকে ADC ব্যবহার করার সাজেশন দেয়। আপনি ADC ব্যবহার করতে না পারলে এবং JWT ব্যবহার করার প্রয়োজন হলে, এইসব উদাহরণ দেখুন।
অন-ডিমান্ড ব্যাকএন্ড সার্ভার অপারেশনের জন্য টোকেনের উদাহরণ
{ "alg": "RS256", "typ": "JWT", "kid": "private_key_id_of_provider_service_account" } { "iss": "provider@yourgcpproject.iam.gserviceaccount.com", "sub": "provider@yourgcpproject.iam.gserviceaccount.com", "aud": "https://fleetengine.googleapis.com/", "iat": 1511900000, "exp": 1511903600, "authorization": { "vehicleid": "*", "tripid": "*" } }
শিডিউল করা ব্যাকএন্ড সার্ভার অপারেশনের জন্য টোকেনের উদাহরণ
{ "alg": "RS256", "typ": "JWT", "kid": "private_key_id_of_provider_service_account" } . { "iss": "provider@yourgcpproject.iam.gserviceaccount.com", "sub": "provider@yourgcpproject.iam.gserviceaccount.com", "aud": "https://fleetengine.googleapis.com/", "iat": 1511900000, "exp": 1511903600, "authorization": { "taskid": "*" } }
শিডিউল করা ব্যাকএন্ড সার্ভার ব্যাচ ক্রিয়েট টাস্ক অপারেশনের জন্য টোকেনের উদাহরণ
{ "alg": "RS256", "typ": "JWT", "kid": "private_key_id_of_provider_service_account" } . { "iss": "provider@yourgcpproject.iam.gserviceaccount.com", "sub": "provider@yourgcpproject.iam.gserviceaccount.com", "aud": "https://fleetengine.googleapis.com/", "iat": 1511900000, "exp": 1511903600, "authorization": { "taskids": ["*"] } }
শিডিউল করা ব্যাকএন্ড সার্ভার প্রতি-ডেলিভারি-গাড়ি অপারেশনের জন্য টোকেনের উদাহরণ
{ "alg": "RS256", "typ": "JWT", "kid": "private_key_id_of_provider_service_account" } . { "iss": "provider@yourgcpproject.iam.gserviceaccount.com", "sub": "provider@yourgcpproject.iam.gserviceaccount.com", "aud": "https://fleetengine.googleapis.com/", "iat": 1511900000, "exp": 1511903600, "authorization": { "deliveryvehicleid": "*" } }
এর পরে কী করতে হবে
- আপনার সেট-আপ যাচাই করুন যাতে আপনি একটি ট্রায়াল ভেহিকল তৈরি করতে পারেন এবং আপনার টোকেনগুলি উদ্দেশ্য অনুযায়ী কাজ করছে কিনা তা নিশ্চিত করতে পারেন
- ব্যাকএন্ড সার্ভার অপারেশনের জন্য JWT-এর পরিবর্তে ADC ব্যবহার করার বিষয়ে তথ্যের জন্য, নিরাপত্তা ওভারভিউ দেখুন।