इस दस्तावेज़ में, 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 के उदाहरण
अगर आपको मांग के हिसाब से यात्राएं करनी हैं, तो इस सेक्शन में सामान्य स्थितियों के लिए जेडब्लयूटी के उदाहरण दिए गए हैं.
ड्राइवर ऐप्लिकेशन के ऑपरेशन के लिए टोकन का उदाहरण
{
"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 के बजाय एडीसी का इस्तेमाल करने के बारे में जानकारी पाने के लिए, सुरक्षा की खास जानकारी देखें.