JSON वेब टोकन

JSON Web Token (JWT) एक ओपन वेब स्टैंडर्ड है. इसका इस्तेमाल, क्लाइंट और सर्वर के बीच जानकारी के आदान-प्रदान की पुष्टि करने और उसे अनुमति देने के लिए किया जाता है. जब कोई ऐप्लिकेशन उपयोगकर्ता, भूमिका के क्रेडेंशियल से पहली बार साइन इन करता है, तो सर्वर एक एन्कोड किया गया, डिजिटल तौर पर हस्ताक्षर किया गया जेडब्लयूटी बनाता है और उसे वापस भेजता है. इसका इस्तेमाल बाद के अनुरोधों के लिए किया जाता है. इस प्रोसेस से, उपयोगकर्ता की पुष्टि की जाती है. साथ ही, उन्हें उनकी खाता भूमिका के आधार पर, रास्तों, सेवाओं, और संसाधनों को ऐक्सेस करने की अनुमति दी जाती है.

Fleet Engine को JSON Web Token (JWT) इस्तेमाल करने की ज़रूरत होती है. ऐसा इसलिए, ताकि कम भरोसेमंद एनवायरमेंट (स्मार्टफ़ोन और ब्राउज़र) से एपीआई के तरीके कॉल किए जा सकें.

JWT आपके सर्वर पर बनता है. इस पर हस्ताक्षर किया जाता है, इसे एन्क्रिप्ट (सुरक्षित) किया जाता है, और क्लाइंट को भेजा जाता है. ऐसा तब तक होता है, जब तक यह JWT खत्म नहीं हो जाता या मान्य नहीं रहता.

मुख्य जानकारी

एपीआई पासकोड के उलट, JWT कम समय के लिए मान्य होते हैं. साथ ही, ये सिर्फ़ उन कार्रवाइयों को सीमित करते हैं जिन्हें भूमिका के हिसाब से अनुमति मिली होती है. JWT के बारे में ज़्यादा जानकारी के लिए, Wikipedia पर JSON Web Tokens लेख पढ़ें. ऐक्सेस की भूमिकाओं के बारे में ज़्यादा जानने के लिए, इस गाइड में सेवा खाते की भूमिकाएं देखें.

JWT एलिमेंट

JWT में एक हेडर और एक दावा सेक्शन होता है. हेडर सेक्शन में, सेवा खातों से मिली निजी कुंजी और एन्क्रिप्शन एल्गोरिदम जैसी जानकारी होती है. दावे वाले सेक्शन में, JWT के बनाए जाने का समय, JWT के इस्तेमाल की अवधि, JWT के ऐक्सेस का दावा करने वाली सेवाएं, और ऐक्सेस के दायरे को तय करने के लिए अनुमति से जुड़ी अन्य जानकारी शामिल होती है. उदाहरण के लिए, डिलीवरी वाहन का आईडी.

यहां दी गई टेबल में, सामान्य तौर पर JWT फ़ील्ड के बारे में जानकारी दी गई है. साथ ही, यह भी बताया गया है कि Fleet Engine Cloud प्रोजेक्ट में इन फ़ील्ड की वैल्यू कहां मिल सकती हैं.

JWT हेडर फ़ील्ड

फ़ील्ड

ब्यौरा

alg

इस्तेमाल किया जाने वाला एल्गोरिदम. `RS256`.

typ

टोकन किस तरह का है. `JWT`.

बच्चे की प्रोफ़ाइल

आपके सेवा खाते की निजी कुंजी का आईडी. यह वैल्यू, आपको सेवा खाते की JSON फ़ाइल के private_key_id फ़ील्ड में मिल सकती है. पक्का करें कि आपने ऐसे सेवा खाते की कुंजी का इस्तेमाल किया हो जिसके पास सही लेवल की अनुमतियां हों.

JWT के दावे वाले फ़ील्ड

फ़ील्ड

ब्यौरा

iss

आपके सेवा खाते का ईमेल पता. यह आपके सेवा खाते की JSON फ़ाइल के client_email फ़ील्ड में मौजूद होता है.

बदले में खेलने वाला खिलाड़ी

आपके सेवा खाते का ईमेल पता. यह आपके सेवा खाते की JSON फ़ाइल के client_email फ़ील्ड में मौजूद होता है.

aud

आपके सेवा खाते का SERVICE_NAME, इस मामले में https://fleetengine.googleapis.com/

iat

यह टाइमस्टैंप बताता है कि JWT कब बनाया गया था. यह 00:00:00 UTC, January 1, 1970 के बाद से बीते सेकंड में बताया जाता है. झुकने के लिए 10 मिनट का समय दें. अगर टाइमस्टैंप बहुत पुराना है या आने वाले समय का है, तो सर्वर गड़बड़ी की सूचना दे सकता है.

exp

वह टाइमस्टैंप जब JWT खत्म हो जाता है. इसे 00:00:00 UTC, January 1, 1970 के बाद से बीते हुए सेकंड में बताया जाता है. अगर टाइमस्टैंप एक घंटे से ज़्यादा का है, तो अनुरोध पूरा नहीं होगा.

ऑथराइज़ेशन

इस्तेमाल के उदाहरण के आधार पर, इसमें deliveryvehicleid, trackingid, taskid या taskids शामिल हो सकते हैं.

अगर taskids तय किए जा रहे हैं, तो अनुमति का दायरा इनमें से किसी एक फ़ॉर्म में एक ऐरे होना चाहिए:

"taskids": ["task_id_one","task_id_two"]

या

"taskids": ["*"]

Fleet Engine JWT के दावे

Fleet Engine, निजी दावों का इस्तेमाल करता है. निजी दावों का इस्तेमाल करने से यह पक्का होता है कि सिर्फ़ अनुमति वाले क्लाइंट ही अपना डेटा ऐक्सेस कर सकते हैं.

उदाहरण के लिए, जब आपका सर्वर किसी ड्राइवर के मोबाइल डिवाइस के लिए JSON वेब टोकन जारी करता है, तो उसमें vehicleid दावा या deliveryvehicleid दावा होना चाहिए. साथ ही, उसमें ड्राइवर के वाहन के आईडी की वैल्यू होनी चाहिए. इसके बाद, ड्राइवर की भूमिका के आधार पर, JWT सिर्फ़ किसी खास वाहन के आईडी के लिए ऐक्सेस चालू करते हैं. ये किसी अन्य वाहन के आईडी के लिए ऐक्सेस चालू नहीं करते.

Fleet Engine इन निजी दावों का इस्तेमाल करता है:

मांग के हिसाब से यात्राएं

  • vehicleid:
    • Driver SDK हमेशा इस दावे का इस्तेमाल करता है. भले ही, वह किसी यात्रा या वाहन पर काम कर रहा हो. Fleet Engine का बैकएंड यह पक्का करता है कि बदलाव करने से पहले, वाहन को अनुरोध की गई यात्रा से जोड़ दिया गया हो.
    • JWT में वाहन और यात्रा, दोनों से जुड़ी कार्रवाइयां शामिल हो सकती हैं. भले ही, इनकी ज़रूरत न हो. इससे JWT पर हस्ताक्षर करने की प्रोसेस को लागू करना आसान हो सकता है.
  • tripid:
    • Consumer SDK हमेशा इस दावे का इस्तेमाल करता है.
    • JWT में वाहन और यात्रा, दोनों से जुड़ी कार्रवाइयां शामिल हो सकती हैं. भले ही, इनकी ज़रूरत न हो. इससे टोकन पर हस्ताक्षर करने की प्रोसेस को आसान बनाया जा सकता है.

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

  • deliveryvehicleid

    इस कुकी का इस्तेमाल, हर डिलीवरी वाहन के हिसाब से एपीआई को कॉल करते समय किया जाता है.

  • taskid

    इसका इस्तेमाल, टास्क के हिसाब से एपीआई कॉल करते समय किया जाता है.

  • taskids

    कॉल करने के लिए, BatchCreateTasksAPI का इस्तेमाल करें. यह दावा, ऐरे के फ़ॉर्म में होना चाहिए. साथ ही, ऐरे में अनुरोध पूरा करने के लिए ज़रूरी सभी टास्क आईडी शामिल होने चाहिए. delivervehicleid, trackingid या taskid वाले दावे शामिल न करें.

  • trackingid

    GetTaskTrackingInfoAPI को कॉल करते समय इसका इस्तेमाल करें. यह दावा, अनुरोध में दिए गए ट्रैकिंग आईडी से मेल खाना चाहिए. delivervehicleid, taskid या taskids वाले दावे शामिल न करें.

आगे क्या करना है