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

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

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

JWT কীভাবে কাজ করে

মোবাইল ফোন এবং ওয়েব ব্রাউজারের মতো অবিশ্বস্ত পরিবেশের জন্য, আপনার ব্যাকএন্ড সার্ভার নিম্নলিখিতভাবে কার্যকর JWT ইস্যু করে:

  • আপনার ক্লায়েন্ট কোড, যা একটি নিম্ন-বিশ্বস্ত পরিবেশে চলছে, তা Fleet Engine-এ পাঠানোর জন্য উপযুক্ত JWT-এর অনুরোধ করতে আপনার সার্ভার কোডকে কল করে, যা একটি সম্পূর্ণ-বিশ্বস্ত পরিবেশে চলছে।

  • JWT-গুলো সার্ভিস অ্যাকাউন্টের সাথে যুক্ত থাকে, তাই Fleet Engine-এ পাঠানো অনুরোধগুলো পরোক্ষভাবে সেই সার্ভিস অ্যাকাউন্টের সাথে যুক্ত হয়ে যায়, যেটি JWT-টিতে স্বাক্ষর করেছে।

  • JWT দাবিগুলো ক্লায়েন্টের কার্যক্রম পরিচালনার জন্য ব্যবহৃত সম্পদ, যেমন নির্দিষ্ট যানবাহন, ভ্রমণ বা কাজের উপর আরও সীমাবদ্ধতা আরোপ করে।

জাভার জন্য অনুমোদন লাইব্রেরি ব্যবহার করুন

জাভার জন্য ফ্লিট ইঞ্জিন অথরাইজেশন লাইব্রেরি ব্যবহার করতে, গিটহাব রিপোজিটরিটি দেখুন। এই লাইব্রেরিটি ফ্লিট ইঞ্জিন JWT তৈরি করা সহজ করে এবং সেগুলোকে নিরাপদে স্বাক্ষর করে। এটি নিম্নলিখিত সুবিধাগুলো প্রদান করে:

  • প্রকল্পের নির্ভরতা ঘোষণা
  • অন-ডিমান্ড ট্রিপ বা নির্ধারিত কাজের জন্য সমস্ত সার্ভিস অ্যাকাউন্ট রোলের একটি সম্পূর্ণ তালিকা
  • ক্রেডেনশিয়াল ফাইল ব্যবহার করা ছাড়াও টোকেন স্বাক্ষর করার অন্যান্য পদ্ধতি, যেমন একটি সার্ভিস অ্যাকাউন্টের ছদ্মবেশ ধারণ করা।
  • gRPC স্টাব অথবা গুগল এপিআই কোডজেন (GAPIC) ক্লায়েন্ট লাইব্রেরি থেকে করা বহির্গামী অনুরোধের সাথে স্বাক্ষরিত টোকেন সংযুক্ত করে।
  • ফ্লিট ইঞ্জিন ক্লায়েন্ট লাইব্রেরির সাথে স্বাক্ষরকারীদের একীভূত করার নির্দেশাবলী

আপনি যদি আপনার কোড থেকে JWT ইস্যু করেন

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

সাধারণ নির্দেশিকা

  • যথাযথ সার্ভিস অ্যাকাউন্ট এবং রোল ব্যবহার করুন । সার্ভিস অ্যাকাউন্ট এবং সংশ্লিষ্ট রোল নিশ্চিত করে যে, টোকেনের জন্য অনুরোধকারী ব্যবহারকারী সেই তথ্য দেখার জন্য অনুমোদিত, যে তথ্যে টোকেনটি তাকে অ্যাক্সেস দেয়। বিশেষত:
    • মোবাইল ডিভাইসে পাঠানোর জন্য কোনো JWT সাইন করার ক্ষেত্রে , Driver বা Consumer SDK রোলের জন্য নির্ধারিত সার্ভিস অ্যাকাউন্টটি ব্যবহার করুন। অন্যথায়, মোবাইল ডিভাইসটি এমন ডেটা পরিবর্তন ও অ্যাক্সেস করতে পারবে, যা তার অ্যাক্সেস করার কথা নয়।
    • প্রিভিলেজড কলের জন্য ব্যবহৃত JWT সাইন করার ক্ষেত্রে , ADC বা JWT ব্যবহার করার সময় সঠিক ফ্লিট ইঞ্জিন অ্যাডমিন রোলসহ সার্ভিস অ্যাকাউন্টটি ব্যবহার করুন। অন্যথায়, অপারেশনটি ব্যর্থ হবে।
  • শুধুমাত্র তৈরি করা টোকেনগুলো শেয়ার করুন । টোকেন তৈরি করতে ব্যবহৃত ক্রেডেনশিয়ালগুলো কখনোই শেয়ার করবেন না।
  • gRPC কলের ক্ষেত্রে , টোকেন সংযুক্ত করার পদ্ধতিটি কলটি করার জন্য ব্যবহৃত ভাষা এবং ফ্রেমওয়ার্কের উপর নির্ভর করে। একটি HTTP কলে টোকেন নির্দিষ্ট করার পদ্ধতি হলো একটি Authorization হেডার অন্তর্ভুক্ত করা, যেখানে একটি বেয়ারার টোকেন থাকে এবং যার ভ্যালু হিসেবে টোকেনটি ব্যবহৃত হয়।
  • একটি মেয়াদোত্তীর্ণের সময় ফেরত দিন। আপনার সার্ভারকে অবশ্যই টোকেনটির জন্য একটি মেয়াদোত্তীর্ণের সময় ফেরত দিতে হবে, যা সাধারণত সেকেন্ডে পরিমাপ করা হয়।
  • যদি আপনাকে OAuth 2.0 অ্যাক্সেস টোকেন ব্যবহার না করে, টোকেন বাহক হিসেবে সরাসরি একটি JSON তৈরি ও স্বাক্ষর করতে হয় , তাহলে Identity Developer ডকুমেন্টেশনে থাকা 'Service account authorization without OAuth' শীর্ষক নির্দেশাবলী পড়ুন।

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

  • JWT পেলোড তৈরি করার সময়, অথরাইজেশন বিভাগে একটি অতিরিক্ত ক্লেইম যোগ করুন এবং এর vehicleid বা tripid কী-এর মান হিসেবে সেই যানবাহন আইডি বা ট্রিপ আইডি সেট করুন, যার জন্য কলটি করা হচ্ছে।

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

  • যখন আপনার সার্ভার অন্যান্য এপিআই কল করে, তখন টোকেনগুলিতে অবশ্যই উপযুক্ত ক্লেইম থাকতে হবে। এর জন্য, আপনি নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করতে পারেন:
    • প্রতিটি কী-এর মান * এ সেট করুন।
    • ব্যবহারকারীকে সমস্ত 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": "*",
       }
    }

ব্যাকএন্ড সার্ভার অপারেশনের জন্য বিকল্প প্রমাণীকরণ পদ্ধতি

গুগল ব্যাকএন্ড সার্ভার অপারেশন প্রমাণীকরণের জন্য 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 ব্যবহারের তথ্যের জন্য, নিরাপত্তা ওভারভিউ দেখুন।