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

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

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

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

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

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

  • JWT, सेवा खातों से जुड़े होते हैं. इसलिए, Fleet Engine को भेजे गए अनुरोध स्पष्ट रूप से उस सेवा खाते के साथ जुड़े होते हैं जिससे JWT साइन किया गया है.

  • JWT के दावे, उन संसाधनों को और सीमित करते हैं जिनका इस्तेमाल क्लाइंट कर सकता है. जैसे कि ख़ास वाहन, यात्राएं या टास्क.

Java के लिए अनुमति लाइब्रेरी का इस्तेमाल करना

Java के लिए फ़्लीट इंजन की अनुमति वाली लाइब्रेरी का इस्तेमाल करने के लिए, GitHub पर जाएं डेटा स्टोर करने की जगह के लिए. यह लाइब्रेरी, Fleet Engine के JWTs को आसानी से बनाती है और उन्हें सुरक्षित तरीके से साइन करती है. इससे यह जानकारी मिलती है:

  • प्रोजेक्ट डिपेंडेंसी से जुड़े एलान
  • ऑन-डिमांड यात्राओं या शेड्यूल किए गए टास्क के लिए, सेवा खाते की सभी भूमिकाओं की पूरी सूची
  • क्रेडेंशियल फ़ाइलों का इस्तेमाल करने के अलावा, टोकन पर हस्ताक्षर करने के अन्य तरीके भी शामिल हैं. जैसे, किसी सेवा खाते की पहचान चुराना
  • यह नीति, किसी gRPC स्टब या Google API Codegen (GAPIC) क्लाइंट लाइब्रेरी
  • हस्ताक्षर करने वाले लोगों को Fleet Engine क्लाइंट लाइब्रेरी के साथ इंटिग्रेट करने के बारे में निर्देश

अगर आपने अपने कोड से JWT जारी किए हैं

अगर Java के लिए अनुमति लाइब्रेरी का इस्तेमाल नहीं किया जा सकता, तो आपको अपने कोडबेस में JWT लागू करने होंगे. इस सेक्शन में, अपनी ऑडियंस बनाने के लिए कुछ दिशा-निर्देश दिए गए हैं टोकन. फ़्लीट इंजन में सुरक्षा सेक्शन में, JSON वेब टोकन देखें का इस्तेमाल करें. सेवा खाता देखें भूमिकाएं: Fleet Engine की ओर से इस्तेमाल की जाने वाली सेवा खाते से जुड़ी भूमिकाओं के लिए. यहां जाएं: यहां दिए गए सेक्शन में, ऑन-डिमांड ट्रिप या JWT के उदाहरणों की सूची देखी जा सकती है शेड्यूल किए गए टास्क.

सामान्य दिशा-निर्देश

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