Google 致力于为黑人社区推动种族平等。查看具体举措

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

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

তুমি শুরু করার আগে

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

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

যখন কোনও ব্যবহারকারী বা ডিভাইস সফলভাবে সাইন ইন করে, ফায়ারবেস একটি প্রাসঙ্গিক আইডি টোকেন তৈরি করে যা স্বতন্ত্রভাবে তাদের চিহ্নিত করে এবং ফায়ারবেস রিয়েলটাইম ডেটাবেস এবং ক্লাউড স্টোরেজ এর মতো বিভিন্ন সংস্থায় অ্যাক্সেস দেয়। আপনার কাস্টম ব্যাকএন্ড সার্ভারে ব্যবহারকারী বা ডিভাইস সনাক্ত করতে আপনি সেই আইডি টোকেনটি পুনরায় ব্যবহার করতে পারেন। ক্লায়েন্টের কাছ থেকে আইডি টোকেনটি পুনরুদ্ধার করতে, ব্যবহারকারী সাইন ইন হয়েছেন তা নিশ্চিত করুন এবং তারপরে সাইন ইন থাকা ব্যবহারকারীর কাছ থেকে আইডি টোকেন পান:

আইওএস

উদ্দেশ্য গ
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 != nullptr) {
  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
});

একবার আপনার আইডি টোকেন হয়ে গেলে, আপনি সেই জেডাব্লুটিটি আপনার ব্যাকএন্ডে প্রেরণ করতে পারেন এবং এটি ফায়ারবেস অ্যাডমিন এসডিকে ব্যবহার করে বা আপনার সার্ভারটি এমন কোনও ভাষায় লিখিত হয় যা কোনও সার্ভার ফায়ারবেস স্থানীয়ভাবে সমর্থন করে না a

ফায়ারবেস অ্যাডমিন এসডিকে ব্যবহার করে আইডি টোকেন যাচাই করুন

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

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

নোড.জেএস

// idToken comes from the client app
admin
  .auth()
  .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;

আইডি টোকেন যাচাইকরণের জন্য একটি প্রকল্প আইডি প্রয়োজন। ফায়ারবেস অ্যাডমিন এসডিকে নিম্নলিখিত পদ্ধতির একটির মাধ্যমে একটি প্রকল্প আইডি পাওয়ার চেষ্টা করেছে:

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

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

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

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

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

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

আইডি টোকেন পেওলোড দাবি
exp মেয়াদ শেষ হওয়ার সময় ভবিষ্যতে হতে হবে। ইউনিক্স যুগের সময় থেকে সময়টি সেকেন্ডে পরিমাপ করা হয়।
iat জারি-সময়ে অতীত হতে হবে। ইউনিক্স যুগের সময় থেকে সময়টি সেকেন্ডে পরিমাপ করা হয়।
aud শ্রোতা আপনার ফায়ারবেস প্রকল্প আইডি অবশ্যই আপনার ফায়ারবেস প্রকল্পের অনন্য শনাক্তকারী, যা সেই প্রকল্পের কনসোলের URL এ পাওয়া যাবে।
iss ইস্যুকারী অবশ্যই "https://securetoken.google.com/<projectId>" হওয়া উচিত, যেখানে <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 মানটি ব্যবহার করুন।

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