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

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

  • अनुमति देने वाली लाइब्रेरी का इस्तेमाल करें—Google का सुझाव है कि अगर आपका कोड बेस Java में लिखा गया है, तो इस तरीके का इस्तेमाल करें. यह लाइब्रेरी, सेवा के साथ इस्तेमाल किए जा सकने वाले सभी मामलों के लिए जेडब्ल्यूटी जारी करती है. साथ ही, इसे लागू करने की प्रोसेस को काफ़ी आसान बनाती है.
  • अपने 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 की क्लाइंट लाइब्रेरी के साथ, साइनर को इंटिग्रेट करने के निर्देश

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

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

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

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

मांग पर की जाने वाली यात्राओं के लिए

  • JWT पेलोड बनाते समय, अनुमति वाले सेक्शन में एक और दावा जोड़ें. इसके लिए, vehicleid या tripid कुंजी को उस वाहन आईडी या यात्रा आईडी की वैल्यू पर सेट करें जिसके लिए कॉल किया जा रहा है.

शेड्यूल किए गए टास्क के लिए

  • जब आपका सर्वर अन्य एपीआई को कॉल करता है, तो टोकन में सही दावा भी शामिल होना चाहिए. इसके लिए, ये काम किए जा सकते हैं:
    • हर कुंजी की वैल्यू को * पर सेट करें.
    • उपयोगकर्ता को सभी taskids और deliveryvehicleids का ऐक्सेस दें. ऐसा करने के लिए, अनुमति वाले सेक्शन में taskid और deliveryvehicleid कुंजियों के साथ एक और दावा जोड़ें.
    • taskids दावे में ऐस्टरिस्क (*) का इस्तेमाल करते समय, यह अरे में मौजूद एकमात्र एलिमेंट होना चाहिए.

मांग पर यात्राओं के लिए JWT के उदाहरण

इस सेक्शन में, 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 का सुझाव है कि बैकएंड सर्वर के ऑपरेशंस की पुष्टि करने के लिए, एडीसी का इस्तेमाल करें. अगर एडीसी का इस्तेमाल नहीं किया जा सकता और आपको JWTs का इस्तेमाल करना है, तो ये उदाहरण देखें.

मांग पर बैकएंड सर्वर ऑपरेशन के लिए टोकन का उदाहरण

  {
    "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 के बजाय एडीसी का इस्तेमाल करने के बारे में जानकारी पाने के लिए, सुरक्षा की खास जानकारी देखें.