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

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

  • ऑथराइज़ेशन लाइब्रेरी का इस्तेमाल करना—Google का सुझाव है कि अगर आपका कोड बेस Java में लिखा गया है, तो इस तरीके का इस्तेमाल करें. यह लाइब्रेरी, सेवा के साथ इस्तेमाल के सभी संभावित उदाहरणों के लिए JWT जारी करती है. साथ ही, इसे लागू करने की प्रोसेस को आसान बनाती है.
  • अपने 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 पर हस्ताक्षर किया जा रहा है, तो ड्राइवर या उपभोक्ता SDK की भूमिका के लिए सेवा खाते का इस्तेमाल करें. ऐसा न करने पर, मोबाइल डिवाइस उस डेटा को बदल सकता है और उसे ऐक्सेस कर सकता है जिसे उसे ऐक्सेस नहीं करना चाहिए.
    • अगर खास अनुमतियों वाले कॉल के लिए JWT पर हस्ताक्षर किया जा रहा है, तो ADC या JWT का इस्तेमाल करते समय, सही Fleet Engine एडमिन की भूमिका वाले सेवा खाते का इस्तेमाल करें. ऐसा न करने पर, कार्रवाई पूरी नहीं हो पाएगी.
  • सिर्फ़ बनाए गए टोकन शेयर करें. टोकन बनाने के लिए इस्तेमाल किए गए क्रेडेंशियल कभी शेयर न करें.
  • 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 का सुझाव है कि बैकएंड सर्वर ऑपरेशंस की पुष्टि करने के लिए, 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 का इस्तेमाल करने के बारे में जानने के लिए, सुरक्षा की खास जानकारी देखें.