JSON वेब टोकन जारी करना

इस दस्तावेज़ में, JSON वेब टोकन जारी करने के तरीके के बारे में बताया गया है. ऐसा, वेब और मोबाइल पर काम करने वाले ऐप्लिकेशन को Fleet Engine के डेटा को ऐक्सेस करने की अनुमति देने के लिए किया जाता है. अगर आपने अब तक ऐसा नहीं किया है, तो Fleet Engine में सुरक्षा सेक्शन में जाकर, JSON वेब टोकन के बारे में पढ़ें. Fleet Engine सेवा के साथ, इनमें से किसी एक तरीके से JWT जारी किए जा सकते हैं:

  • अनुमति देने वाली लाइब्रेरी का इस्तेमाल करें—अगर आपका कोडबेस Java में लिखा गया है, तो Google आपको इस तरीके का इस्तेमाल करने का सुझाव देता है. यह लाइब्रेरी, इस्तेमाल के सभी ऐसे उदाहरणों के लिए JWT जारी करती है जिनकी ज़रूरत आपको सेवा के साथ पड़ सकती है. साथ ही, यह आपके लिए इसे लागू करना बहुत आसान बना देती है.
  • अपने JWT बनाएं—अगर हमारी JWT लाइब्रेरी का इस्तेमाल नहीं किया जा सकता, तो आपको इन्हें अपने कोडबेस में बनाना होगा. इस सेक्शन में, हर स्थिति के लिए JWT के अलग-अलग उदाहरण दिए गए हैं.

JWT कैसे काम करते हैं

भरोसेमंद न होने वाले एनवायरमेंट, जैसे कि मोबाइल फ़ोन और वेब ब्राउज़र के लिए, आपका बैकएंड सर्वर ऐसे JWT जारी करता है जो इस तरह काम करते हैं:

  • कम भरोसे वाले एनवायरमेंट में चल रहा आपका क्लाइंट कोड, पूरी तरह से भरोसे वाले एनवायरमेंट में चल रहे आपके सर्वर कोड को कॉल करता है. ऐसा, Fleet Engine को सही JWT पास करने का अनुरोध करने के लिए किया जाता है.

  • 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 पर हस्ताक्षर किया जा रहा है, तो Driver SDK या Consumer SDK की भूमिका के लिए सेवा खाते का इस्तेमाल करें. ऐसा न करने पर, मोबाइल डिवाइस उस डेटा को बदल सकता है और उसे ऐक्सेस कर सकता है जिसे उसे ऐक्सेस नहीं करना चाहिए.
    • अगर आपको खास अधिकारों वाले कॉल के लिए इस्तेमाल किए जाने वाले JWT पर हस्ताक्षर करना है, तो एडीसी या JWT का इस्तेमाल करते समय, Fleet Engine Admin की भूमिका वाले सेवा खाते का इस्तेमाल करें. ऐसा न होने पर, कार्रवाई पूरी नहीं की जा सकेगी.
  • सिर्फ़ बनाए गए टोकन शेयर करें. टोकन बनाने के लिए इस्तेमाल किए गए क्रेडेंशियल कभी शेयर न करें.
  • gRPC कॉल के लिए, टोकन अटैच करने का तरीका, कॉल करने के लिए इस्तेमाल की गई भाषा और फ़्रेमवर्क पर निर्भर करता है. एचटीटीपी कॉल में टोकन तय करने का तरीका यह है कि Authorization हेडर में एक बियरर टोकन शामिल किया जाए. इस बियरर टोकन की वैल्यू, टोकन होती है.
  • समयसीमा खत्म होने का समय दिखाता है. आपके सर्वर को टोकन के खत्म होने का समय बताना होगा. आम तौर पर, यह समय सेकंड में होता है.
  • अगर आपको OAuth 2.0 ऐक्सेस टोकन का इस्तेमाल करने के बजाय, सीधे तौर पर टोकन बियरर के तौर पर JSON बनाना और उस पर हस्ताक्षर करना है, तो Identity Developer के दस्तावेज़ में 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 का उदाहरण दिया गया है.

फ़्लीट में मौजूद सभी टास्क और वाहनों को ट्रैक करने के लिए टोकन का उदाहरण

यहां दिया गया उदाहरण, एक ऐसे टोकन का है जो ऑपरेटर के इस्तेमाल किए गए वेब ऐप्लिकेशन से, फ्लीट में मौजूद सभी टास्क और वाहनों को ट्रैक करता है. इन कार्रवाइयों के लिए ज़रूरी अनुमतियां, क्लाइंट ऐप्लिकेशन के लिए ज़रूरी अनुमतियों से ज़्यादा होती हैं. क्लाइंट-साइड पर लागू करने के लिए, JavaScript Fleet Tracking Library सेट अप करें. इससे इस टोकन का इस्तेमाल किया जा सकेगा:

  • 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, बैकएंड सर्वर के ऑपरेशंस की पुष्टि करने के लिए, एडीसी का इस्तेमाल करने का सुझाव देता है. अगर आपको एडीसी का इस्तेमाल नहीं करना है और 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": "*"
       }
    }
  

आगे क्या करना है