JSON वेब टोकन

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

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

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

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

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

JWT के एलिमेंट

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

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

JWT के हेडर फ़ील्ड

फ़ील्ड

ब्यौरा

alg

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

typ

टोकन का टाइप. `JWT`.

kid

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

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

फ़ील्ड

ब्यौरा

iss

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

sub

आपके सेवा खाते का ईमेल पता. यह आपके सेवा खाते की 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 Web Token जारी करता है, तो उसमें 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 दावे शामिल न करें.

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