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

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

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

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

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

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

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

আইওএস

উদ্দেশ্য গ
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();
            }
        }
    });

Unক্য

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
});

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

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

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

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

Node.js

// 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;

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

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

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

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

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

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

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

আইডি টোকেন পেলোড দাবি
exp মেয়াদ শেষ হওয়ার সময় ভবিষ্যতে হতে হবে। ইউনিক্স যুগের পর থেকে সময়টি সেকেন্ডে পরিমাপ করা হয়।
iat ইস্যু করা-সময়ে অতীত হতে হবে। ইউনিক্স যুগের পর থেকে সময়টি সেকেন্ডে পরিমাপ করা হয়।
aud শ্রোতা আপনার ফায়ারবেস প্রকল্প আইডি হতে হবে, আপনার ফায়ারবেস প্রকল্পের অনন্য শনাক্তকারী, যা ওই প্রকল্পের কনসোলের ইউআরএলে পাওয়া যাবে।
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 লাইব্রেরি ব্যবহার। মান ব্যবহার করুন max-age মধ্যে Cache-Control যে শেষবিন্দু প্রতিক্রিয়াতে শিরোলেখ যখন জানতে সার্বজনিক কী রিফ্রেশ করতে।

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