আইডি টোকেন যাচাই করুন

যদি আপনার Firebase ক্লায়েন্ট অ্যাপটি একটি কাস্টম ব্যাকএন্ড সার্ভারের সাথে যোগাযোগ করে, তাহলে আপনাকে সেই সার্ভারে বর্তমানে সাইন-ইন করা ব্যবহারকারীকে সনাক্ত করতে হতে পারে। নিরাপদে এটি করতে, একটি সফল সাইন-ইন করার পরে, HTTPS ব্যবহার করে আপনার সার্ভারে ব্যবহারকারীর আইডি টোকেন পাঠান৷ তারপর, সার্ভারে, আইডি টোকেনের অখণ্ডতা এবং সত্যতা যাচাই করুন এবং এটি থেকে uid পুনরুদ্ধার করুন৷ আপনি আপনার সার্ভারে বর্তমানে সাইন-ইন করা ব্যবহারকারীকে নিরাপদে সনাক্ত করতে এইভাবে প্রেরিত uid ব্যবহার করতে পারেন।

আপনি শুরু করার আগে

Firebase অ্যাডমিন SDK-এর মাধ্যমে আইডি টোকেন যাচাই করতে, আপনার অবশ্যই একটি পরিষেবা অ্যাকাউন্ট থাকতে হবে। একটি পরিষেবা অ্যাকাউন্টের সাথে অ্যাডমিন SDK কীভাবে শুরু করবেন সে সম্পর্কে আরও তথ্যের জন্য অ্যাডমিন SDK সেটআপ নির্দেশাবলী অনুসরণ করুন৷

ক্লায়েন্টদের আইডি টোকেন পুনরুদ্ধার করুন

যখন কোনো ব্যবহারকারী বা ডিভাইস সফলভাবে সাইন ইন করে, তখন Firebase একটি সংশ্লিষ্ট আইডি টোকেন তৈরি করে যা তাদের স্বতন্ত্রভাবে শনাক্ত করে এবং Firebase Realtime Database এবং Cloud Storage মতো বিভিন্ন সংস্থানে তাদের অ্যাক্সেস দেয়। আপনি আপনার কাস্টম ব্যাকএন্ড সার্ভারে ব্যবহারকারী বা ডিভাইস সনাক্ত করতে সেই ID টোকেনটি পুনরায় ব্যবহার করতে পারেন। ক্লায়েন্ট থেকে আইডি টোকেন পুনরুদ্ধার করতে, নিশ্চিত করুন যে ব্যবহারকারী সাইন ইন করেছেন এবং তারপর সাইন-ইন করা ব্যবহারকারীর কাছ থেকে আইডি টোকেন পান:

iOS+

উদ্দেশ্য-C
FIRUser *currentUser = [FIRAuth auth].currentUser;
[currentUser getIDTokenForcingRefresh:YES
                           completion:^(NSString *_Nullable idToken,
                                        NSError *_Nullable error) {
          if (error) {
            // Handle error
            return;
          }

          // Send token to your backend via HTTPS
          // ...
}];
সুইফট
let currentUser = FIRAuth.auth()?.currentUser
currentUser?.getIDTokenForcingRefresh(true) { idToken, error in
  if let error = error {
    // Handle error
    return;
  }

  // Send token to your backend via HTTPS
  // ...
}

অ্যান্ড্রয়েড

FirebaseUser mUser = FirebaseAuth.getInstance().getCurrentUser();
mUser.getIdToken(true)
    .addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
        public void onComplete(@NonNull Task<GetTokenResult> task) {
            if (task.isSuccessful()) {
                String idToken = task.getResult().getToken();
                // Send token to your backend via HTTPS
                // ...
            } else {
                // Handle error -> task.getException();
            }
        }
    });

ঐক্য

Firebase.Auth.FirebaseUser user = auth.CurrentUser;
user.TokenAsync(true).ContinueWith(task => {
  if (task.IsCanceled) {
    Debug.LogError("TokenAsync was canceled.");
   return;
  }

  if (task.IsFaulted) {
    Debug.LogError("TokenAsync encountered an error: " + task.Exception);
    return;
  }

  string idToken = task.Result;

  // Send token to your backend via HTTPS
  // ...
});

সি++

firebase::auth::User user = auth->current_user();
if (user.is_valid()) {
  firebase::Future<std::string> idToken = user.GetToken(true);

  // Send token to your backend via HTTPS
  // ...
}

ওয়েব

firebase.auth().currentUser.getIdToken(/* forceRefresh */ true).then(function(idToken) {
  // Send token to your backend via HTTPS
  // ...
}).catch(function(error) {
  // Handle error
});

একবার আপনার কাছে একটি আইডি টোকেন হয়ে গেলে, আপনি সেই JWTটিকে আপনার ব্যাকএন্ডে পাঠাতে পারেন এবং Firebase অ্যাডমিন SDK ব্যবহার করে বা তৃতীয় পক্ষের JWT লাইব্রেরি ব্যবহার করে যাচাই করতে পারেন যদি আপনার সার্ভারটি এমন কোনো ভাষায় লেখা হয় যা Firebase স্থানীয়ভাবে সমর্থন করে না।

Firebase অ্যাডমিন SDK ব্যবহার করে আইডি টোকেন যাচাই করুন

আইডি টোকেন যাচাই এবং ডিকোড করার জন্য Firebase অ্যাডমিন SDK-এর একটি অন্তর্নির্মিত পদ্ধতি রয়েছে। যদি প্রদত্ত আইডি টোকেনের সঠিক বিন্যাস থাকে, মেয়াদ শেষ না হয় এবং সঠিকভাবে স্বাক্ষর করা হয়, তাহলে পদ্ধতিটি ডিকোড করা আইডি টোকেন ফেরত দেয়। আপনি ডিকোডেড টোকেন থেকে ব্যবহারকারী বা ডিভাইসের uid ধরতে পারেন।

একটি পরিষেবা অ্যাকাউন্ট দিয়ে অ্যাডমিন SDK শুরু করতে অ্যাডমিন SDK সেটআপ নির্দেশাবলী অনুসরণ করুন৷ তারপর, একটি আইডি টোকেন যাচাই করতে verifyIdToken() পদ্ধতি ব্যবহার করুন:

Node.js

// idToken comes from the client app
getAuth()
  .verifyIdToken(idToken)
  .then((decodedToken) => {
    const uid = decodedToken.uid;
    // ...
  })
  .catch((error) => {
    // Handle error
  });

জাভা

// idToken comes from the client app (shown above)
FirebaseToken decodedToken = FirebaseAuth.getInstance().verifyIdToken(idToken);
String uid = decodedToken.getUid();

পাইথন

# id_token comes from the client app (shown above)

decoded_token = auth.verify_id_token(id_token)
uid = decoded_token['uid']

যাও

client, err := app.Auth(ctx)
if err != nil {
	log.Fatalf("error getting Auth client: %v\n", err)
}

token, err := client.VerifyIDToken(ctx, idToken)
if err != nil {
	log.Fatalf("error verifying ID token: %v\n", err)
}

log.Printf("Verified ID token: %v\n", token)

সি#

FirebaseToken decodedToken = await FirebaseAuth.DefaultInstance
    .VerifyIdTokenAsync(idToken);
string uid = decodedToken.Uid;

আইডি টোকেন যাচাইকরণের জন্য একটি প্রকল্প আইডি প্রয়োজন। Firebase অ্যাডমিন SDK নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটির মাধ্যমে একটি প্রকল্প আইডি পাওয়ার চেষ্টা করে:

  • যদি SDK একটি স্পষ্ট projectId অ্যাপ বিকল্পের সাথে শুরু করা হয়, তাহলে SDK সেই বিকল্পের মান ব্যবহার করে।
  • যদি SDK পরিষেবা অ্যাকাউন্টের শংসাপত্র দিয়ে শুরু করা হয়, তাহলে SDK পরিষেবা অ্যাকাউন্ট JSON অবজেক্টের project_id ক্ষেত্র ব্যবহার করে।
  • GOOGLE_CLOUD_PROJECT এনভায়রনমেন্ট ভেরিয়েবল সেট করা থাকলে, SDK তার মানটিকে প্রোজেক্ট আইডি হিসেবে ব্যবহার করে। এই এনভায়রনমেন্ট ভেরিয়েবলটি App Engine এবং Compute Engine মতো Google পরিকাঠামোতে চলমান কোডের জন্য উপলব্ধ।

তৃতীয় পক্ষের JWT লাইব্রেরি ব্যবহার করে আইডি টোকেন যাচাই করুন

আপনার ব্যাকএন্ড যদি ফায়ারবেস অ্যাডমিন SDK দ্বারা সমর্থিত নয় এমন একটি ভাষায় হয়, আপনি এখনও আইডি টোকেন যাচাই করতে পারেন। প্রথমে, আপনার ভাষার জন্য একটি তৃতীয় পক্ষের JWT লাইব্রেরি খুঁজুন । তারপর, আইডি টোকেনের হেডার, পেলোড এবং স্বাক্ষর যাচাই করুন।

যাচাই করুন আইডি টোকেনের শিরোনাম নিম্নলিখিত সীমাবদ্ধতার সাথে সামঞ্জস্যপূর্ণ:

আইডি টোকেন হেডার দাবি
alg অ্যালগরিদম "RS256"
kid কী আইডি https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com এ তালিকাভুক্ত সর্বজনীন কীগুলির একটির সাথে সঙ্গতিপূর্ণ হতে হবে

আইডি টোকেনের পেলোড নিম্নলিখিত সীমাবদ্ধতাগুলি মেনে চলে তা যাচাই করুন:

আইডি টোকেন পেলোড দাবি
exp মেয়াদ শেষ হওয়ার সময় ভবিষ্যতে হতে হবে। ইউনিক্স যুগের পর থেকে সময়টি সেকেন্ডে পরিমাপ করা হয়।
iat ইস্যু করা সময়ে অতীতে থাকতে হবে। ইউনিক্স যুগের পর থেকে সময়টি সেকেন্ডে পরিমাপ করা হয়।
aud শ্রোতা আপনার Firebase প্রোজেক্ট আইডি হতে হবে, আপনার Firebase প্রোজেক্টের অনন্য শনাক্তকারী, যা সেই প্রোজেক্টের কনসোলের URL-এ পাওয়া যাবে।
iss ইস্যুকারী "https://securetoken.google.com/<projectId>" হতে হবে, যেখানে <projectId> একই প্রজেক্ট আইডি উপরের aud জন্য ব্যবহৃত হয়।
sub বিষয় একটি অ-খালি স্ট্রিং হতে হবে এবং ব্যবহারকারী বা ডিভাইসের uid হতে হবে।
auth_time প্রমাণীকরণ সময় অতীতে থাকতে হবে। ব্যবহারকারীর প্রমাণীকরণের সময়।

অবশেষে, নিশ্চিত করুন যে আইডি টোকেনটি টোকেনের kid দাবির সাথে সম্পর্কিত ব্যক্তিগত কী দ্বারা স্বাক্ষরিত হয়েছে। https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com থেকে সর্বজনীন কীটি নিন এবং স্বাক্ষর যাচাই করতে একটি JWT লাইব্রেরি ব্যবহার করুন৷ সর্বজনীন কীগুলি কখন রিফ্রেশ করতে হবে তা জানতে সেই শেষ পয়েন্ট থেকে প্রতিক্রিয়ার Cache-Control শিরোনামে max-age মান ব্যবহার করুন৷

উপরের সমস্ত যাচাইকরণ সফল হলে, আপনি আইডি টোকেনের বিষয় ( sub ) সংশ্লিষ্ট ব্যবহারকারী বা ডিভাইসের uid হিসাবে ব্যবহার করতে পারেন।