JSON Web Token (JWT) एक ओपन वेब स्टैंडर्ड है. इसका इस्तेमाल, क्लाइंट और सर्वर के बीच जानकारी के आदान-प्रदान की पुष्टि करने और उसे अनुमति देने के लिए किया जाता है. जब कोई ऐप्लिकेशन उपयोगकर्ता, भूमिका के क्रेडेंशियल का इस्तेमाल करके पहली बार साइन इन करता है, तो सर्वर एक एन्कोड किया गया, डिजिटल तौर पर साइन किया गया JWT बनाता है और उसे वापस भेजता है. इसका इस्तेमाल बाद के अनुरोधों के लिए किया जाता है. इस प्रोसेस से, उपयोगकर्ता की पुष्टि की जाती है. साथ ही, उसे खाते की भूमिका के आधार पर रास्तों, सेवाओं, और संसाधनों को ऐक्सेस करने की अनुमति दी जाती है.
Fleet Engine को JSON वेब टोकन (JWT) का इस्तेमाल करना होता है. ऐसा इसलिए, ताकि कम भरोसेमंद एनवायरमेंट (स्मार्टफ़ोन और ब्राउज़र) से एपीआई के तरीके कॉल किए जा सकें.
JWT आपके सर्वर पर बनता है. इस पर हस्ताक्षर किया जाता है, इसे एन्क्रिप्ट (सुरक्षित) किया जाता है, और क्लाइंट को भेजा जाता है. ऐसा तब तक होता है, जब तक इसकी समयसीमा खत्म नहीं हो जाती या यह मान्य नहीं रहता.
मुख्य जानकारी
- Fleet Engine के ख़िलाफ़ पुष्टि करने और अनुमति देने के लिए, ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करें.
- JWT पर हस्ताक्षर करने के लिए, सही सेवा खाते का इस्तेमाल करें. Fleet Engine की बुनियादी जानकारी में, Fleet Engine serviceaccount की भूमिकाएं देखें.
एपीआई पासकोड के उलट, JWT कम समय के लिए मान्य होते हैं. साथ ही, ये सिर्फ़ उन कार्रवाइयों को सीमित करते हैं जिन्हें भूमिका के हिसाब से करने की अनुमति है. JWT के बारे में ज़्यादा जानने के लिए, Wikipedia पर JSON वेब टोकन लेख पढ़ें. ऐक्सेस की भूमिकाओं के बारे में ज़्यादा जानने के लिए, इस गाइड में सेवा खाते की भूमिकाएं देखें.
JWT के एलिमेंट
JWT में एक हेडर और एक दावा सेक्शन होता है. हेडर सेक्शन में, सेवा खातों से मिली निजी कुंजी और एन्क्रिप्शन एल्गोरिदम जैसी जानकारी होती है. दावे वाले सेक्शन में, JWT की जानकारी होती है. जैसे, JWT बनाने का समय, JWT की समयसीमा, JWT जिन सेवाओं के ऐक्सेस का दावा करता है, और ऐक्सेस को स्कोप करने के लिए अनुमति से जुड़ी अन्य जानकारी. उदाहरण के लिए, डिलीवरी वाहन का आईडी.
यहां दी गई टेबल में, JWT फ़ील्ड के बारे में सामान्य जानकारी दी गई है. साथ ही, यह भी बताया गया है कि Fleet Engine Cloud प्रोजेक्ट में इन फ़ील्ड की वैल्यू कहां मिल सकती हैं.
फ़ील्ड |
ब्यौरा |
|---|---|
alg |
इस्तेमाल किया जाने वाला एल्गोरिदम. `RS256`. |
typ |
टोकन का टाइप. `JWT`. |
बच्चा |
आपके सेवा खाते के निजी पासकोड का आईडी. यह वैल्यू, आपको सेवा खाते की JSON फ़ाइल के |
फ़ील्ड |
ब्यौरा |
|---|---|
iss |
आपके सेवा खाते का ईमेल पता. यह सेवा खाते की JSON फ़ाइल के |
बदले में खेलने वाला खिलाड़ी |
आपके सेवा खाते का ईमेल पता. यह सेवा खाते की JSON फ़ाइल के |
aud |
आपके सेवा खाते का |
iat |
यह टाइमस्टैंप, JWT बनाए जाने का समय दिखाता है. यह समय, 00:00:00 |
exp |
यह टाइमस्टैंप, JWT के खत्म होने का समय दिखाता है. यह |
ऑथराइज़ेशन |
इस्तेमाल के उदाहरण के आधार पर, इसमें अगर 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इसका इस्तेमाल, टास्क के हिसाब से एपीआई को कॉल करते समय करें.
-
taskidsBatchCreateTasksAPIको कॉल करते समय इस्तेमाल करें. यह दावा, ऐरे फ़ॉर्म में होना चाहिए. साथ ही, ऐरे में वे सभी टास्क आईडी शामिल होने चाहिए जो अनुरोध को पूरा करने के लिए ज़रूरी हैं.delivervehicleid,trackingidयाtaskidजैसे दावे शामिल न करें. -
trackingidGetTaskTrackingInfoAPIको कॉल करते समय इसका इस्तेमाल करें. दावा, अनुरोध में मौजूद ट्रैकिंग आईडी से मेल खाना चाहिए.delivervehicleid,taskidयाtaskidsजैसे दावे शामिल न करें.
आगे क्या करना है
- पूरे पुष्टि करने के फ़्लो को समझने के लिए, Fleet Engine के सुरक्षा डिज़ाइन के बारे में पढ़ें.
- अपने सर्वर से JSON वेब टोकन जारी करने का तरीका जानें.