पुष्टि करना और अनुमति देना

इस सेक्शन में, Fleet Engine के साथ इंटिग्रेट करने के बारे में पुष्टि करने और अनुमति देने के सिद्धांतों के बारे में बताया गया है.

Google Cloud Console की मदद से, Last Mile Fleet Solution से मिलने वाली सुविधाओं को कॉन्फ़िगर किया जा सकता है. फ़्लीट इंजन SDK टूल के लिए, ऐसे JSON वेब टोकन (JWT) का इस्तेमाल करना ज़रूरी होता है जिन पर सही सेवा खाते से साइन किया गया हो.

खास जानकारी

फ़्लीट इंजन की पुष्टि करने और उससे अनुमति देने वाले ग्राहक बैकएंड में, ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल के स्टैंडर्ड तरीकों का इस्तेमाल किया जाना चाहिए.

Fleet Engine को ऐसे कॉल भी मिलते हैं जो कम भरोसे वाले माहौल, जैसे कि स्मार्टफ़ोन और ब्राउज़र से आते हैं. सेवा खाते की सीक्रेट कुंजियों को सुरक्षित रखने के लिए, ग्राहकों के बैकएंड से फ़्लीट इंजन से जुड़े कुछ अतिरिक्त दावों के साथ साइन किए गए JSON वेब टोकन (JWT) जनरेट करने की उम्मीद की जाती है. इन्हें मोबाइल फ़ोन जैसे गैर-भरोसेमंद एनवायरमेंट के लिए जारी किया जा सकता है.

पुष्टि करने के डिज़ाइन के सिद्धांत

Fleet Engine के ऑथेंटिकेशन फ़्लो में, डिज़ाइन के ये सिद्धांत शामिल होते हैं.

  • आईएएम की भूमिकाएं, मुख्य खाते के लिए मंज़ूर किए गए संसाधनों पर अनुमतियों का एक सेट तय करती हैं. उदाहरण के लिए, एडमिन की भूमिका वाले लोग, ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करके हर काम कर सकते हैं. वहीं, गैर-भरोसेमंद ड्राइवर* की भूमिका वाले उपयोगकर्ताओं को सिर्फ़ वाहन की जगह की जानकारी अपडेट करने की अनुमति होती है. साथ ही, वे सिर्फ़ पुष्टि करने और अनुमति देने के लिए JWT का इस्तेमाल कर सकते हैं.

  • गैर-भरोसेमंद एनवायरमेंट के लिए, JWT का दावा उन इकाइयों पर भी पाबंदी लगाता है जिन पर कॉलर ऑपरेट कर सकता है. ये चुनिंदा टास्क या डिलीवरी वाले वाहन हो सकते हैं.

  • कम-भरोसेमंद एनवायरमेंट में चल रहे आपके कोड को सबसे पहले, JWT जारी करने के लिए, किसी भरोसेमंद एनवायरमेंट में चल रहे आपके कोड पर कॉल करना होगा.

  • फ़्लीट इंजन किसी संसाधन के लिए, एपीआई कॉल पर ये सुरक्षा जांच करता है:

    1. कॉल करने वाले मुख्य व्यक्ति के पास संसाधन पर की जाने वाली कार्रवाई के लिए ज़रूरी अनुमतियां (भूमिका असाइन करने के ज़रिए) दी जाती हैं.

    2. गैर-एडमिन भूमिकाओं के लिए, अनुरोध में पास किए गए JWT के दावे, संसाधन के लिए ज़रूरी अनुमति देते हैं.

पुष्टि करने की प्रक्रिया

नीचे दिया गया सिलसिलेवार डायग्राम, पुष्टि करने के फ़्लो की जानकारी दिखाता है.

  1. फ़्लीट एडमिन, सेवा खाते बनाता है.

  2. फ़्लीट एडमिन, सेवा खातों को खास आईएएम भूमिकाएं असाइन करता है.

  3. फ़्लीट एडमिन अपने बैकएंड को सेवा खातों और ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल के साथ कॉन्फ़िगर करता है.

  4. क्लाइंट ऐप्लिकेशन, ग्राहक बैकएंड से JWT का अनुरोध करता है. अनुरोध करने वाला व्यक्ति, ड्राइवर ऐप्लिकेशन, उपभोक्ता ऐप्लिकेशन या निगरानी करने वाला ऐप्लिकेशन हो सकता है.

  5. ग्राहक बैकएंड पर हस्ताक्षर करके, उस सेवा खाते के लिए JWT जारी करता है. क्लाइंट ऐप्लिकेशन को JWT मिलता है.

  6. क्लाइंट ऐप्लिकेशन, डेटा को पढ़ने या उसमें बदलाव करने के लिए फ़्लीट इंजन से कनेक्ट करने के लिए JWT का इस्तेमाल करता है. यह इस बात पर निर्भर करता है कि सेटअप चरण के दौरान, डेटा को कौनसी IAM रोल असाइन की गई हैं.

पुष्टि करने के क्रम का डायग्राम

Cloud प्रोजेक्ट का सेटअप

अपना क्लाउड प्रोजेक्ट सेट अप करने के लिए, पहले अपना प्रोजेक्ट बनाएं और फिर सेवा खाते बनाएं.

Google Cloud प्रोजेक्ट बनाने के लिए:

  1. Google Cloud Console का इस्तेमाल करके, Google Cloud प्रोजेक्ट बनाएं.
  2. एपीआई और सेवाएं डैशबोर्ड का इस्तेमाल करके, Local Rides and Deliveryies API को चालू करें.

सेवा खाते और IAM भूमिकाएं

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

लास्ट माइल फ़्लीट सलूशन इन भूमिकाओं का इस्तेमाल करता है:

भूमिकाकंपनी का ब्यौरा
फ़्लीट इंजन डिलीवरी का भरोसेमंद ड्राइवर

roles/fleetengine.deliveryTrustedDriver
डिलीवरी वाहन और टास्क बनाने और उन्हें अपडेट करने की अनुमति देता है. इसमें डिलीवरी वाहन की जगह और टास्क की स्थिति या नतीजा अपडेट करना शामिल है. इस भूमिका वाले सेवा खाते से चुने गए टोकन, आम तौर पर आपके डिलीवरी ड्राइवर के मोबाइल डिवाइसों या बैकएंड सर्वर पर इस्तेमाल किए जाते हैं.
फ़्लीट इंजन डिलीवरी की सेवा देने वाले को भरोसेमंद ड्राइवर नहीं मिला

roles/fleetengine.deliveryUntrustedDriver
डिलीवरी वाले वाहन की जगह की जानकारी अपडेट करने की अनुमति देता है. इस भूमिका वाले सेवा खाते से चुने गए टोकन, आम तौर पर आपके डिलीवरी ड्राइवर के मोबाइल डिवाइसों से इस्तेमाल किए जाते हैं.
फ़्लीट इंजन डिलीवरी उपभोक्ता उपयोगकर्ता

roles/fleetengine.deliveryConsumer
ट्रैकिंग आईडी का इस्तेमाल करके टास्क खोजने की अनुमति देती है. साथ ही, टास्क की जानकारी को पढ़ सकती है, लेकिन उसमें बदलाव नहीं कर सकती. इस भूमिका वाले सेवा खाते से चुने गए टोकन, आम तौर पर डिलीवरी करने वाले उपभोक्ता के वेब ब्राउज़र से इस्तेमाल किए जाते हैं.
फ़्लीट इंजन डिलीवरी एडमिन

roles/fleetengine.deliveryAdmin
डिलीवरी संसाधनों के लिए पढ़ने और लिखने की अनुमति देता है. इस भूमिका वाले प्रिंसिपल को JWT का इस्तेमाल करने की ज़रूरत नहीं होती. इसके बजाय, उन्हें ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करना चाहिए. कस्टम JWT दावों को अनदेखा किया जाता है. यह भूमिका भरोसेमंद एनवायरमेंट (ग्राहक बैकएंड) तक सीमित होनी चाहिए.
फ़्लीट इंजन डिलीवरी सुपर यूज़र **(इस्तेमाल नहीं किया जा सका)**

roles/fleetengine.deliverySuperUser
सभी डिलीवरी व्हीकल और टास्क एपीआई को अनुमति देता है. इस भूमिका वाले सेवा खाते से चुने गए टोकन, आम तौर पर बैकएंड सर्वर से इस्तेमाल किए जाते हैं.
फ़्लीट इंजन डिलीवरी फ़्लीट रीडर

roles/fleetengine.deliveryFleetReader
डिलीवरी करने वाले वाहनों और टास्क को पढ़ने और ट्रैकिंग आईडी का इस्तेमाल करके टास्क खोजने की अनुमति देता है. इस भूमिका वाले सेवा खाते से चुने गए टोकन, आम तौर पर डिलीवरी बेड़ा ऑपरेटर के वेब ब्राउज़र से इस्तेमाल किए जाते हैं.

कॉर्पोरेट आईटी से मैनेज किए जाने वाले डिवाइसों पर डिलीवरी ड्राइवर देने वाले संगठन, फ़्लीट इंजन के भरोसेमंद ड्राइवर की भूमिका में मिलने वाली सुविधा का फ़ायदा ले सकते हैं. साथ ही, वे मोबाइल ऐप्लिकेशन में कुछ या सभी फ़्लीट इंजन इंटरैक्शन को इंटिग्रेट करने का विकल्प चुन सकते हैं.

अपने हिसाब से डिवाइस लाएं से जुड़ी नीतियों का समर्थन करने वाले संगठनों को, फ़्लीट इंजन के गैर-भरोसेमंद ड्राइवर उपयोगकर्ता की भूमिका की सुरक्षा के लिए ऑप्ट इन करना चाहिए. साथ ही, फ़्लीट इंजन को वाहन की जगह की जानकारी से जुड़े अपडेट भेजने के लिए, सिर्फ़ मोबाइल ऐप्लिकेशन का इस्तेमाल करना चाहिए. अन्य सभी इंटरैक्शन, ग्राहक बैकएंड सर्वर से होने चाहिए.

ड्राइवर और उपभोक्ता SDK टूल, इन स्टैंडर्ड भूमिकाओं के आधार पर बनाए जाते हैं. हालांकि, ऐसी कस्टम भूमिकाएं बनाई जा सकती हैं जो अनुमतियों के आर्बिट्रेरी सेट को एक साथ बंडल करने की अनुमति देती हैं. ज़रूरी अनुमति न होने पर, ड्राइवर और उपभोक्ता SDK टूल गड़बड़ी के मैसेज दिखाएंगे. इस वजह से, हम strong का सुझाव देते हैं कि कस्टम भूमिकाओं के बजाय, ऊपर दी गई भूमिकाओं के स्टैंडर्ड सेट का इस्तेमाल करें.

सेवा खाता बनाना

Google Cloud Console में IAM & Admin > Service Accounts टैब का इस्तेमाल करके, सेवा खाता बनाया जा सकता है. भूमिका वाली ड्रॉप-डाउन सूची से, Fleet Engine चुनें. इसके बाद, सेवा खाते को कोई एक भूमिका असाइन करें. हर भूमिका से जुड़े खाते की जानकारी देना एक सही तरीका है. उदाहरण के लिए, सेवा खाते को एक सही नाम दें.

सुविधा के लिए, अगर आपको गैर-भरोसेमंद क्लाइंट के लिए JWTs को मिंट करना है, तो सेवा खाता टोकन क्रिएटर रोल में उपयोगकर्ताओं को जोड़ने से वे gcloud कमांड लाइन टूल की मदद से टोकन को मिंट कर सकते हैं.

gcloud projects add-iam-policy-binding project-id \
       --member=user:my-user@example.com \
       --role=roles/iam.serviceAccountTokenCreator

जहां my-user@example.com का इस्तेमाल, gcloud (gcloud auth list --format='value(account)') से पुष्टि करने के लिए किया जाता है.

फ़्लीट इंजन ऑथ लाइब्रेरी

फ़्लीट इंजन ऐसी जगहों पर फ़्लीट इंजन एपीआई के ऐक्सेस को रोकने के लिए जेडब्ल्यूटी का इस्तेमाल करता है जिन पर भरोसा नहीं किया जा सकता. GitHub पर उपलब्ध, Fleet Engine Auth Library से, फ़्लीट इंजन JWT बनाना आसान हो जाता है. साथ ही, इन पर सुरक्षित तरीके से हस्ताक्षर किए जा सकते हैं.

इस लाइब्रेरी से ये फ़ायदे मिलते हैं:

  • यह फ़्लीट इंजन टोकन बनाने की प्रोसेस को आसान बनाता है.
  • क्रेडेंशियल फ़ाइलों का इस्तेमाल करने के अलावा, टोकन पर हस्ताक्षर करने के तरीके उपलब्ध कराता है. जैसे, सेवा खाते के नाम पर हस्ताक्षर करना.

अनुमति पाने के लिए JSON वेब टोकन (JWT) बनाना

अगर फ़्लीट इंजन ऑथ लाइब्रेरी का इस्तेमाल नहीं किया जा रहा है, तो JWT सीधे आपके कोड बेस में बनाए जाने चाहिए. इसके लिए ज़रूरी है कि आपको JWT के बारे में अच्छी तरह जानकारी होनी चाहिए. साथ ही, यह भी समझना ज़रूरी है कि ये Fleet Engine से कैसे जुड़े हैं. इसलिए, हम आपको फ़्लीट इंजन ऑथ लाइब्रेरी का इस्तेमाल करने का सुझाव देते हैं.

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

JWT के हेडर सेक्शन में ये फ़ील्ड होते हैं:

फ़ील्डकंपनी का ब्यौरा
alg एल्गोरिदम का इस्तेमाल करना है. `RS256`.
typ टोकन का टाइप. `JWT`.
kid आपके सेवा खाते का निजी पासकोड आईडी. यह वैल्यू, आपके सेवा खाते की JSON फ़ाइल के `private_key_id` फ़ील्ड में देखी जा सकती है. पक्का करें कि सेवा खाते की ऐसी कुंजी का इस्तेमाल किया जा रहा हो जिसके पास अनुमतियों के सही लेवल हों.

JWT के दावे सेक्शन में ये फ़ील्ड होते हैं:

फ़ील्डकंपनी का ब्यौरा
iss आपके सेवा खाते का ईमेल पता.
sub आपके सेवा खाते का ईमेल पता.
aud आपके सेवा खाते का Service_NAME, इस मामले में https://fleetengine.googleapis.com/
iat टोकन बनाने के समय का टाइमस्टैंप, जो 1 जनवरी, 1970 को 00:00:00 यूटीसी के बाद से सेकंड में बीत चुका है. तिरछा होने पर 10 मिनट दें. अगर टाइमस्टैंप काफ़ी पहले या आने वाले समय का है, तो सर्वर गड़बड़ी की शिकायत कर सकता है.
exp टोकन की समयसीमा खत्म होने का टाइमस्टैंप, जो 1 जनवरी, 1970 को 00:00:00 यूटीसी के बाद से सेकंड में बीत चुका है. अगर टाइमस्टैंप एक घंटे से ज़्यादा का है, तो अनुरोध पूरा नहीं किया जा सकता.
authorization इस्तेमाल के उदाहरण के आधार पर, इसमें `deliveryvehicleid`, `trackingid`, `taskid` या `taskids` हो सकते हैं.

JWT टोकन मिंट करने का मतलब है, इसे साइन करना. JWT बनाने और साइन करने के निर्देश और कोड सैंपल देखने के लिए, OAuth के बिना सेवा खाते की अनुमति देना देखें. इसके बाद, gRPC कॉल या Fleet Engine को ऐक्सेस करने के लिए इस्तेमाल किए जाने वाले अन्य तरीकों में मिंट किए गए टोकन को अटैच किया जा सकता है.

JWT के दावे

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

लास्ट माइल फ़्लीट सलूशन इन निजी दावों का इस्तेमाल करता है:

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

अपने बैकएंड सर्वर से एपीआई को कॉल करते समय, टोकन में सही दावा भी शामिल होना चाहिए. हालांकि, deliveryvehicleid, taskid, और trackingid दावों के लिए, तारे के निशान ("*") की खास वैल्यू का इस्तेमाल किया जा सकता है. taskids वाले दावे में स्टार के निशान ("*") का भी इस्तेमाल किया जा सकता है, लेकिन अरे में सिर्फ़ यही एलिमेंट होना चाहिए.

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

टोकन को gRPC कॉल में अटैच करने का तरीका, कॉल करने के लिए इस्तेमाल की गई भाषा और फ़्रेमवर्क पर निर्भर करता है. एचटीटीपी कॉल के लिए टोकन तय करने का तरीका यह है कि बियरर टोकन के साथ ऑथराइज़ेशन हेडर शामिल किया जाए, जिसकी वैल्यू टोकन है. जैसा कि अलग-अलग शिपमेंट ट्रैकिंग या फ़्लीट परफ़ॉर्मेंस के इस्तेमाल के उदाहरणों के लिए, अनुमति वाले नोट में बताया गया है.

इस उदाहरण में आपके बैकएंड सर्वर से हर टास्क की कार्रवाई के लिए एक टोकन दिखाया गया है:

    {
      "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": "*"
       }
    }

नीचे दिए गए उदाहरण में, असली उपयोगकर्ता के ग्राहकों के लिए टोकन दिखाया गया है:

    {
      "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"
       }
    }

नीचे दिए गए उदाहरण में, आपके ड्राइवर ऐप्लिकेशन के लिए टोकन दिखाया गया है:

    {
      "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"
       }
    }
  • हेडर में kid फ़ील्ड के लिए, अपने सेवा खाते का निजी पासकोड आईडी बताएं. आपको यह वैल्यू, सेवा खाते की JSON फ़ाइल के private_key_id फ़ील्ड में मिलेगी.
  • iss और sub फ़ील्ड के लिए, अपने सेवा खाते का ईमेल पता बताएं. आपको यह वैल्यू, अपने सेवा खाते की JSON फ़ाइल के client_email फ़ील्ड में दिखेगी.
  • aud फ़ील्ड के लिए, https://SERVICE_NAME/ बताएं.
  • iat फ़ील्ड के लिए, टोकन बनाए जाने के समय का टाइमस्टैंप बताएं. यह टाइमस्टैंप, 1 जनवरी, 1970 को 00:00:00 यूटीसी के बाद सेकंड में दिखाया गया है. स्क्यू के लिए 10 मिनट दें. अगर टाइमस्टैंप बहुत पहले या आने वाले समय का है, तो सर्वर गड़बड़ी की रिपोर्ट कर सकता है.
  • exp फ़ील्ड के लिए, 1 जनवरी, 1970 को 00:00:00 यूटीसी से सेकंड में, टोकन की समयसीमा खत्म होने का टाइमस्टैंप बताएं. सुझाई गई वैल्यू iat + 3600 है.

किसी मोबाइल डिवाइस या असली उपयोगकर्ता को टोकन भेजने के लिए साइन करते समय, डिलीवरी ड्राइवर या उपभोक्ता की भूमिका के लिए क्रेडेंशियल फ़ाइल का इस्तेमाल ज़रूर करें. नहीं तो, मोबाइल डिवाइस या असली उपयोगकर्ता के पास उस जानकारी को बदलने या देखने की सुविधा होगी जिसका ऐक्सेस उनके पास नहीं होना चाहिए.