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 के क्लाउड प्रोजेक्ट में इन फ़ील्ड की वैल्यू कहां मिल सकती हैं.

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. अगर टाइमस्टैंप, आने वाले समय के एक घंटे से ज़्यादा का है, तो अनुरोध पूरा नहीं हो पाएगा.

authorization

इस्तेमाल के उदाहरण के आधार पर, इसमें 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 दावे शामिल न करें.

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