JSON ওয়েব টোকেন ইস্যু করা

আপনার ওয়েব ও মোবাইল-ভিত্তিক অ্যাপকে 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 তৈরি ও সাইন করতে চান, তাহলে পরিচয় ডেভেলপার ডকুমেন্টেশনে 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 Reader Cloud 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 ব্যবহার করা সংক্রান্ত তথ্যের জন্য, নিরাপত্তা ওভারভিউ দেখুন।