একটি টোকেন কি?
স্বল্প-বিশ্বাসের পরিবেশ থেকে API পদ্ধতির কলগুলির জন্য, ফ্লিট ইঞ্জিনের জন্য একটি উপযুক্ত পরিষেবা অ্যাকাউন্ট দ্বারা স্বাক্ষরিত JSON ওয়েব টোকেন (JWTs) ব্যবহার করা প্রয়োজন৷ কম-বিশ্বাসের পরিবেশে স্মার্টফোন এবং ব্রাউজার অন্তর্ভুক্ত। একটি JWT আপনার সার্ভারে উদ্ভূত হয়, যা একটি সম্পূর্ণ বিশ্বস্ত পরিবেশ । JWT স্বাক্ষরিত, এনক্রিপ্ট করা হয় এবং পরবর্তী সার্ভার ইন্টারঅ্যাকশনের জন্য ক্লায়েন্টের কাছে পাঠানো হয় যতক্ষণ না এটি মেয়াদ শেষ হয় বা আর বৈধ না হয়।
আপনার ব্যাকএন্ড মানক অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র প্রক্রিয়া ব্যবহার করে ফ্লিট ইঞ্জিনের বিরুদ্ধে প্রমাণীকরণ এবং অনুমোদন করা উচিত। একটি উপযুক্ত পরিষেবা অ্যাকাউন্ট দ্বারা স্বাক্ষরিত JWTs ব্যবহার করা নিশ্চিত করুন। পরিষেবা-অ্যাকাউন্ট ভূমিকাগুলির একটি তালিকার জন্য, ফ্লিট ইঞ্জিন বেসিকগুলিতে ফ্লিট ইঞ্জিন পরিষেবা অ্যাকাউন্টের ভূমিকা দেখুন৷
বিপরীতে, আপনার ব্যাকএন্ডকে স্ট্যান্ডার্ড অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র প্রক্রিয়া ব্যবহার করে ফ্লিট ইঞ্জিনের বিরুদ্ধে প্রমাণীকরণ এবং অনুমোদন করা উচিত।
JSON ওয়েব টোকেন সম্পর্কে আরও তথ্যের জন্য, Fleet Engine Essentials- এ JSON ওয়েব টোকেন দেখুন।
কিভাবে ক্লায়েন্ট টোকেন পেতে?
একবার একজন ড্রাইভার বা ভোক্তা উপযুক্ত অনুমোদনের শংসাপত্র ব্যবহার করে আপনার অ্যাপে লগ ইন করলে, সেই ডিভাইস থেকে জারি করা যেকোনো আপডেটের জন্য অবশ্যই উপযুক্ত অনুমোদনের টোকেন ব্যবহার করতে হবে, যা ফ্লিট ইঞ্জিনকে অ্যাপের অনুমতির সাথে যোগাযোগ করে।
বিকাশকারী হিসাবে, আপনার ক্লায়েন্ট বাস্তবায়ন নিম্নলিখিতগুলি করার ক্ষমতা প্রদান করবে:
- আপনার সার্ভার থেকে একটি JSON ওয়েব টোকেন আনুন।
- টোকেন রিফ্রেশ কমাতে মেয়াদ শেষ না হওয়া পর্যন্ত টোকেনটি পুনরায় ব্যবহার করুন।
- মেয়াদ শেষ হয়ে গেলে টোকেনটি রিফ্রেশ করুন।
AuthTokenFactory
ক্লাস লোকেশন আপডেটের সময় অনুমোদন টোকেন তৈরি করে। SDK-কে ফ্লিট ইঞ্জিনে পাঠানোর জন্য আপডেট তথ্য সহ টোকেন প্যাকেজ করতে হবে। নিশ্চিত করুন যে আপনার সার্ভার-সাইড বাস্তবায়ন SDK শুরু করার আগে টোকেন ইস্যু করতে পারে।
ফ্লিট ইঞ্জিন পরিষেবা দ্বারা প্রত্যাশিত টোকেনগুলির বিশদ বিবরণের জন্য, ফ্লিট ইঞ্জিনের জন্য JSON ওয়েব টোকেন ইস্যু দেখুন৷
অনুমোদন টোকেন আনার উদাহরণ
এখানে একটি AuthTokenFactory
এর একটি কঙ্কাল বাস্তবায়ন রয়েছে:
class JsonAuthTokenFactory implements AuthTokenFactory {
private String vehicleServiceToken; // initially null
private long expiryTimeMs = 0;
private String vehicleId;
// This method is called on a thread whose only responsibility is to send
// location updates. Blocking is OK, but just know that no location updates
// can occur until this method returns.
@Override
public String getToken(AuthTokenContext authTokenContext) {
String vehicleId = requireNonNull(context.getVehicleId());
if (System.currentTimeMillis() > expiryTimeMs || !vehicleId.equals(this.vehicleId)) {
// The token has expired, go get a new one.
fetchNewToken(vehicleId);
}
return vehicleServiceToken;
}
private void fetchNewToken(String vehicleId) {
String url = "https://yourauthserver.example/token/" + vehicleId;
try (Reader r = new InputStreamReader(new URL(url).openStream())) {
com.google.gson.JsonObject obj
= com.google.gson.JsonParser.parseReader(r).getAsJsonObject();
vehicleServiceToken = obj.get("VehicleServiceToken").getAsString();
expiryTimeMs = obj.get("TokenExpiryMs").getAsLong();
// The expiry time could be an hour from now, but just to try and avoid
// passing expired tokens, we subtract 10 minutes from that time.
expiryTimeMs -= 10 * 60 * 1000;
this.vehicleId = vehicleId;
} catch (IOException e) {
// It's OK to throw exceptions here. The StatusListener you passed to
// create the DriverContext class will be notified and passed along the failed
// update warning.
throw new RuntimeException("Could not get auth token", e);
}
}
}
অনুমোদন সার্ভার থেকে JSON ফর্ম্যাটে একটি টোকেন আনতে এই বিশেষ বাস্তবায়নটি অন্তর্নির্মিত Java HTTP ক্লায়েন্ট ব্যবহার করে। ক্লায়েন্ট পুনঃব্যবহারের জন্য টোকেন সংরক্ষণ করে এবং পুরানো টোকেন মেয়াদ শেষ হওয়ার 10 মিনিটের মধ্যে হলে টোকেনটি পুনরায় আনয়ন করে।
আপনার বাস্তবায়ন ভিন্নভাবে কাজ করতে পারে, যেমন টোকেন রিফ্রেশ করতে একটি ব্যাকগ্রাউন্ড থ্রেড ব্যবহার করা।
ফ্লিট ইঞ্জিনের জন্য উপলব্ধ ক্লায়েন্ট লাইব্রেরিগুলির জন্য, নির্ধারিত কার্য পরিষেবাগুলির জন্য ক্লায়েন্ট লাইব্রেরিগুলি দেখুন৷