इस दस्तावेज़ में, वेब और मोबाइल पर काम करने वाले ऐप्लिकेशन को Fleet Engine के डेटा का ऐक्सेस देने के लिए, JSON वेब टोकन जारी करने का तरीका बताया गया है. अगर आपने अब तक ऐसा नहीं किया है है, तो JSON वेब टोकन के बारे में Fleet Engine में सुरक्षा सेक्शन में जाकर पढ़ें. Fleet Engine सेवा की मदद से, JWTs को इनमें से किसी एक तरीके से जारी किया जा सकता है:
- ऑथराइज़ेशन लाइब्रेरी का इस्तेमाल करना—Google का सुझाव है कि अगर आपका कोड बेस Java में लिखा गया है, तो इस तरीके का इस्तेमाल करें. यह लाइब्रेरी, सेवा के साथ इस्तेमाल के सभी संभावित उदाहरणों के लिए JWTs जारी करती है. साथ ही, इसे लागू करना आसान बनाती है.
- अपने JWTs बनाना—अगर हमारी JWT लाइब्रेरी का इस्तेमाल नहीं किया जा सकता, तो आपको इन्हें अपने कोडबेस में बनाना होगा. इस सेक्शन में, हर उदाहरण के लिए JWTs के अलग-अलग उदाहरण दिए गए हैं.
JWTs कैसे काम करते हैं
मोबाइल फ़ोन और वेब ब्राउज़र जैसे भरोसेमंद न होने वाले एनवायरमेंट के लिए, आपका बैकएंड सर्वर JWTs जारी करता है. ये JWTs इस तरह काम करते हैं:
कम भरोसेमंद एनवायरमेंट में चल रहा आपका क्लाइंट कोड, पूरी तरह से भरोसेमंद एनवायरमेंट में चल रहे आपके सर्वर कोड को कॉल करता है. इससे वह Fleet Engine को पास करने के लिए, सही JWT का अनुरोध करता है.
JWTs, सेवा खातों से जुड़े होते हैं. इसलिए, Fleet Engine को भेजे गए अनुरोध, उस सेवा खाते से अपने-आप जुड़ जाते हैं जिसने JWT पर हस्ताक्षर किए हैं.
JWT के दावे, उन संसाधनों को और सीमित करते हैं जिन पर क्लाइंट काम कर सकता है. जैसे, खास वाहन, यात्राएं या टास्क.
Java के लिए ऑथराइज़ेशन लाइब्रेरी का इस्तेमाल करना
Java के लिए Fleet Engine की ऑथराइज़ेशन लाइब्रेरी का इस्तेमाल करने के लिए, GitHub रिपॉज़िटरी पर जाएं. यह लाइब्रेरी, Fleet Engine के JWTs को आसानी से बनाती है और सुरक्षित तरीके से उन पर हस्ताक्षर करती है. यह लाइब्रेरी, ये सुविधाएं देती है:
- प्रोजेक्ट की डिपेंडेंसी के एलान
- ऑन-डिमांड ट्रिप या शेड्यूल किए गए टास्क के लिए, सेवा खाते की सभी भूमिकाओं की पूरी सूची
- क्रेडेंशियल फ़ाइलों का इस्तेमाल करने के अलावा, टोकन पर हस्ताक्षर करने के तरीके. जैसे, किसी सेवा खाते के तौर पर काम करना
- gRPC स्टब या Google API Codegen (GAPIC) क्लाइंट लाइब्रेरी से किए गए आउटबाउंड अनुरोधों में, हस्ताक्षर किए गए टोकन जोड़ना
- हस्ताक्षर करने वालों को Fleet Engine की क्लाइंट लाइब्रेरी के साथ इंटिग्रेट करने के निर्देश
अगर आपके कोड से JWTs जारी किए जाते हैं
अगर Java के लिए ऑथराइज़ेशन लाइब्रेरी का इस्तेमाल नहीं किया जा सकता, तो आपको अपने कोडबेस में JWTs लागू करने होंगे. इस सेक्शन में, अपने टोकन बनाने के लिए कुछ दिशा-निर्देश दिए गए हैं. JWT फ़ील्ड और दावों की सूची के लिए, Fleet Engine में सुरक्षा सेक्शन में जाकर, JSON वेब टोकन देखें. Fleet Engine में इस्तेमाल होने वाली सेवा खाते की भूमिकाओं के बारे में जानने के लिए, सेवा खाते की भूमिकाएं देखें. ऑन-डिमांड ट्रिप या शेड्यूल किए गए टास्क के लिए, JWT के उदाहरणों की सूची देखने के लिए, अगला सेक्शन देखें.
सामान्य दिशा-निर्देश
- सही सेवा खातों और भूमिकाओं का इस्तेमाल करें. सेवा खाते और उससे जुड़ी भूमिका से यह पक्का होता है कि टोकन का अनुरोध करने वाले उपयोगकर्ता के पास, उस जानकारी को देखने की अनुमति है जिसे टोकन के ज़रिए ऐक्सेस किया जा सकता है. खास तौर पर:
- किसी मोबाइल डिवाइस को पास करने के लिए, JWT पर हस्ताक्षर करते समय, ड्राइवर या ग्राहक SDK की भूमिका के लिए सेवा खाते का इस्तेमाल करें. ऐसा न करने पर, मोबाइल डिवाइस उस डेटा में बदलाव कर सकता है और उसे ऐक्सेस कर सकता है जिसे उसे ऐक्सेस नहीं करना चाहिए.
- खास अनुमतियों वाले कॉल के लिए इस्तेमाल किए जाने वाले JWT पर हस्ताक्षर करते समय, ADC या JWTs का इस्तेमाल करते समय, सही Fleet Engine एडमिन की भूमिका वाले सेवा खाते का इस्तेमाल करें. ऐसा न करने पर, कार्रवाई पूरी नहीं हो पाएगी.
- सिर्फ़ बनाए गए टोकन शेयर करें. टोकन बनाने के लिए इस्तेमाल किए गए क्रेडेंशियल कभी शेयर न करें.
- 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 Tracking Library सेट अप करना देखें. इसमें बताया गया है कि इस टोकन का इस्तेमाल कैसे किया जाता है:
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 का सुझाव है कि बैकएंड सर्वर ऑपरेशंस की पुष्टि करने के लिए, ADC का इस्तेमाल करें. अगर ADC का इस्तेमाल नहीं किया जा सकता और JWTs का इस्तेमाल करना है, तो इन उदाहरणों को देखें.
ऑन-डिमांड बैकएंड सर्वर ऑपरेशन के लिए टोकन का उदाहरण
{ "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": "*" } }
आगे क्या करना है
- अपने सेटअप की पुष्टि करें, ताकि टेस्ट के लिए वाहन बनाया जा सके. साथ ही, यह पक्का किया जा सके कि आपके टोकन उम्मीद के मुताबिक काम कर रहे हैं
- बैकएंड सर्वर ऑपरेशंस के लिए JWTs के बजाय ADC का इस्तेमाल करने के बारे में जानने के लिए, सुरक्षा की खास जानकारी देखें.