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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • सही सेवा खातों और भूमिकाओं का इस्तेमाल करें. सेवा खाते और उससे जुड़ी भूमिका से यह पक्का होता है कि टोकन का अनुरोध करने वाले उपयोगकर्ता के पास, उस जानकारी को देखने की अनुमति है जिसका ऐक्सेस टोकन से मिलता है. खास तौर पर:
    • अगर किसी 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 के बजाय एडीसी का इस्तेमाल करने के बारे में जानकारी पाने के लिए, सुरक्षा की खास जानकारी देखें.