इस दस्तावेज़ में, JSON वेब टोकन जारी करने के तरीके के बारे में बताया गया है. ऐसा, वेब और मोबाइल पर काम करने वाले ऐप्लिकेशन को Fleet Engine के डेटा को ऐक्सेस करने की अनुमति देने के लिए किया जाता है. अगर आपने अब तक ऐसा नहीं किया है, तो Fleet Engine में सुरक्षा सेक्शन में जाकर, JSON वेब टोकन के बारे में पढ़ें. Fleet Engine सेवा के साथ, इनमें से किसी एक तरीके से JWT जारी किए जा सकते हैं:
- अनुमति देने वाली लाइब्रेरी का इस्तेमाल करें—अगर आपका कोडबेस Java में लिखा गया है, तो Google आपको इस तरीके का इस्तेमाल करने का सुझाव देता है. यह लाइब्रेरी, इस्तेमाल के उन सभी उदाहरणों के लिए JWT जारी करती है जिनकी ज़रूरत आपको सेवा के साथ पड़ सकती है. साथ ही, यह आपके लिए इसे लागू करना बहुत आसान बना देती है.
- अपने JWT बनाएं—अगर हमारी JWT लाइब्रेरी का इस्तेमाल नहीं किया जा सकता, तो आपको इन्हें अपने कोडबेस में बनाना होगा. इस सेक्शन में, हर स्थिति के लिए JWT के अलग-अलग उदाहरण दिए गए हैं.
JWT कैसे काम करते हैं
भरोसेमंद न होने वाले एनवायरमेंट, जैसे कि मोबाइल फ़ोन और वेब ब्राउज़र के लिए, आपका बैकएंड सर्वर ऐसे JWT जारी करता है जो इस तरह काम करते हैं:
कम भरोसे वाले प्लैटफ़ॉर्म पर चल रहा आपका क्लाइंट कोड, पूरी तरह से भरोसे वाले प्लैटफ़ॉर्म पर चल रहे आपके सर्वर कोड को कॉल करता है. ऐसा, Fleet Engine को पास करने के लिए सही JWT का अनुरोध करने के लिए किया जाता है.
JWT, सेवा खातों से जुड़े होते हैं. इसलिए, Fleet Engine को भेजे गए अनुरोध, उस सेवा खाते से जुड़े होते हैं जिसने JWT पर हस्ताक्षर किया है.
JWT के दावे, उन संसाधनों को और सीमित करते हैं जिन पर क्लाइंट काम कर सकता है. जैसे, कुछ वाहन, यात्राएं या टास्क.
Java के लिए अनुमति देने वाली लाइब्रेरी का इस्तेमाल करना
Java के लिए Fleet Engine की अनुमति देने वाली लाइब्रेरी का इस्तेमाल करने के लिए, GitHub डेटाबेस पर जाएं. यह लाइब्रेरी, Fleet Engine JWT को आसानी से बनाने और उन्हें सुरक्षित तरीके से साइन करने में मदद करती है. इससे ये सुविधाएं मिलती हैं:
- प्रोजेक्ट डिपेंडेंसी के बारे में जानकारी
- मांग पर की जाने वाली यात्राओं या शेड्यूल किए गए टास्क के लिए, सेवा खाते की सभी भूमिकाओं की पूरी सूची
- क्रेडेंशियल फ़ाइलों का इस्तेमाल करने के अलावा, टोकन पर हस्ताक्षर करने के अन्य तरीके. जैसे, किसी सेवा खाते के तौर पर काम करना
- हस्ताक्षर किए गए टोकन को, gRPC स्टब या Google API Codegen (GAPIC) क्लाइंट लाइब्रेरी से किए गए आउटबाउंड अनुरोधों से जोड़ता है
- हस्ताक्षर करने वालों को Fleet Engine की क्लाइंट लाइब्रेरी के साथ इंटिग्रेट करने के बारे में निर्देश
अगर आपको अपने कोड से JWT जारी करने हैं
अगर Java के लिए अनुमति देने वाली लाइब्रेरी का इस्तेमाल नहीं किया जा सकता, तो आपको अपने कोडबेस में JWT लागू करने होंगे. इस सेक्शन में, अपने टोकन बनाने के लिए कुछ दिशा-निर्देश दिए गए हैं. JWT फ़ील्ड और दावों की सूची के लिए, Fleet Engine में सुरक्षा सेक्शन में जाकर, JSON वेब टोकन देखें. Fleet Engine में इस्तेमाल होने वाली सेवा खाते की भूमिकाओं के लिए, सेवा खाते की भूमिकाएं देखें. मांग पर की जाने वाली यात्राओं या शेड्यूल किए गए टास्क के लिए, JWT के उदाहरणों की सूची देखने के लिए, यहां दिया गया सेक्शन देखें.
सामान्य दिशा-निर्देश
- सही सेवा खातों और भूमिकाओं का इस्तेमाल करें. सेवा खाते और उससे जुड़ी भूमिका से यह पक्का किया जाता है कि टोकन का अनुरोध करने वाले उपयोगकर्ता को उस जानकारी को देखने की अनुमति है जिसका ऐक्सेस टोकन देता है. खास तौर पर:
- अगर किसी मोबाइल डिवाइस को पास करने के लिए JWT पर हस्ताक्षर किया जा रहा है, तो Driver या Consumer SDK की भूमिका के लिए सेवा खाते का इस्तेमाल करें. ऐसा न करने पर, मोबाइल डिवाइस उस डेटा को बदल सकता है और उसे ऐक्सेस कर सकता है जिसे उसे ऐक्सेस नहीं करना चाहिए.
- अगर आपको खास अधिकारों वाले कॉल के लिए इस्तेमाल किए जाने वाले JWT पर हस्ताक्षर करना है, तो एडीसी या JWT का इस्तेमाल करते समय, Fleet Engine Admin की सही भूमिका वाला सेवा खाता इस्तेमाल करें. ऐसा न होने पर, कार्रवाई पूरी नहीं की जा सकेगी.
- सिर्फ़ बनाए गए टोकन शेयर करें. टोकन बनाने के लिए इस्तेमाल किए गए क्रेडेंशियल कभी शेयर न करें.
- gRPC कॉल के लिए, टोकन अटैच करने का तरीका, कॉल करने के लिए इस्तेमाल की गई भाषा और फ़्रेमवर्क पर निर्भर करता है. एचटीटीपी कॉल में टोकन तय करने का तरीका यह है कि
Authorizationहेडर में एक बियरर टोकन शामिल किया जाए. इस बियरर टोकन की वैल्यू, टोकन होती है. - समयसीमा खत्म होने का समय दिखाता है. आपके सर्वर को टोकन के खत्म होने का समय बताना होगा. आम तौर पर, यह समय सेकंड में होता है.
- अगर आपको OAuth 2.0 ऐक्सेस टोकन का इस्तेमाल करने के बजाय, सीधे तौर पर टोकन बियरर के तौर पर JSON बनाना और उस पर हस्ताक्षर करना है, तो Identity Developer के दस्तावेज़ में OAuth के बिना सेवा खाते की पुष्टि करने से जुड़े निर्देश पढ़ें.
मांग के हिसाब से यात्राएं करने के लिए
- JWT पेलोड बनाते समय, अनुमति वाले सेक्शन में एक और दावा जोड़ें. इसमें
vehicleidयाtripidकुंजी को उस वाहन के आईडी या यात्रा के आईडी की वैल्यू पर सेट करें जिसके लिए कॉल किया जा रहा है.
शेड्यूल किए गए टास्क के लिए
- जब आपका सर्वर अन्य एपीआई को कॉल करता है, तब टोकन में सही दावा भी शामिल होना चाहिए. इसके लिए, यह तरीका अपनाएं:
- हर बटन की वैल्यू को
*पर सेट करें. - उपयोगकर्ता को सभी
taskidsऔरdeliveryvehicleidsका ऐक्सेस दें. इसके लिए, अनुमति वाले सेक्शन में एक और दावा जोड़ें. इसके लिए,taskidऔरdeliveryvehicleidकुंजियों का इस्तेमाल करें. taskidsदावे में तारा चिह्न (*) का इस्तेमाल करते समय, यह ज़रूरी है कि यह ऐरे में मौजूद सिर्फ़ एक एलिमेंट हो.
- हर बटन की वैल्यू को
मांग पर यात्रा के लिए JWT के उदाहरण
अगर आपको मांग के हिसाब से यात्राएं करनी हैं, तो इस सेक्शन में सामान्य स्थितियों के लिए JWT के उदाहरण दिए गए हैं.
ड्राइवर ऐप्लिकेशन के ऑपरेशन के लिए टोकन का उदाहरण
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_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": {
"vehicleid": "driver_12345"
}
}
उपयोगकर्ता के ऐप्लिकेशन के ऑपरेशन के लिए टोकन का उदाहरण
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_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": {
"tripid": "trip_54321"
}
}
शेड्यूल किए गए टास्क के लिए JWT के उदाहरण
अगर शेड्यूल किए गए टास्क का इस्तेमाल किया जाता है, तो इस सेक्शन में सामान्य स्थितियों के लिए JWT का उदाहरण दिया गया है.
ड्राइवर ऐप्लिकेशन के लिए टोकन का उदाहरण
{
"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"
}
}
उपभोक्ता ऐप्लिकेशन के लिए टोकन का उदाहरण
{
"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"
}
}
फ़्लीट ऑपरेशंस के लिए JWT के उदाहरण
इस सेक्शन में, फ़्लीट ऑपरेशंस के सामान्य उदाहरण के लिए JWT का उदाहरण दिया गया है.
फ़्लीट में मौजूद सभी टास्क और वाहनों को ट्रैक करने के लिए टोकन का उदाहरण
यहां दिया गया उदाहरण, एक ऐसे टोकन का है जो ऑपरेटर के इस्तेमाल किए गए वेब ऐप्लिकेशन से, फ्लीट में मौजूद सभी टास्क और वाहनों को ट्रैक करता है. इन कार्रवाइयों के लिए ज़रूरी अनुमतियां, क्लाइंट ऐप्लिकेशन के लिए ज़रूरी अनुमतियों से ज़्यादा होती हैं. क्लाइंट-साइड पर लागू करने के लिए, JavaScript फ्लीट ट्रैकिंग लाइब्रेरी सेट अप करें लेख पढ़ें. इससे आपको यह टोकन इस्तेमाल करने में मदद मिलेगी:
Fleet Engine Delivery Fleet ReaderCloud IAM की भूमिका का इस्तेमाल करके टोकन पर हस्ताक्षर करें.
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_consumer_service_account"
}
.
{
"iss": "superuser@yourgcpproject.iam.gserviceaccount.com",
"sub": "superuser@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"scope": "https://www.googleapis.com/auth/xapi",
"authorization": {
"taskid": "*",
"deliveryvehicleid": "*",
}
}
बैकएंड सर्वर के ऑपरेशनों के लिए पुष्टि करने का दूसरा तरीका
Google, बैकएंड सर्वर के ऑपरेशंस की पुष्टि करने के लिए, एडीसी का इस्तेमाल करने का सुझाव देता है. अगर आपको एडीसी का इस्तेमाल नहीं करना है और JWT का इस्तेमाल करना है, तो इन उदाहरणों को देखें.
मांग पर बैकएंड सर्वर ऑपरेशन के लिए टोकन का उदाहरण
{ "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": { "vehicleid": "*", "tripid": "*" } }
शेड्यूल की गई बैकएंड सर्वर कार्रवाई के लिए टोकन का उदाहरण
{ "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": "*" } }
आगे क्या करना है
- अपने सेटअप की पुष्टि करें, ताकि आप टेस्ट के लिए वाहन बना सकें और यह पक्का कर सकें कि आपके टोकन सही तरीके से काम कर रहे हैं
- बैकएंड सर्वर के ऑपरेशनों के लिए, JWT के बजाय एडीसी का इस्तेमाल करने के बारे में जानकारी पाने के लिए, सुरक्षा के बारे में खास जानकारी देखें.