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

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

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

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

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

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

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

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

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

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

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

अगर अपने कोड से JWT जारी किया जाता है, तो

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

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

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