Google is committed to advancing racial equity for Black communities. See how.
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

आईडी टोकन सत्यापित करें

यदि आपका फायरबेस क्लाइंट ऐप एक कस्टम बैकएंड सर्वर के साथ संचार करता है, तो आपको उस सर्वर पर वर्तमान में साइन इन किए गए उपयोगकर्ता की पहचान करने की आवश्यकता हो सकती है। ऐसा सुरक्षित रूप से करने के लिए, एक सफल साइन-इन के बाद, HTTPS का उपयोग करके अपने सर्वर पर उपयोगकर्ता की आईडी टोकन भेजें। फिर, सर्वर पर, आईडी टोकन की अखंडता और प्रामाणिकता को सत्यापित करें और इससे uid को पुनर्प्राप्त करें। आप अपने सर्वर पर वर्तमान में साइन-इन किए गए उपयोगकर्ता को सुरक्षित रूप से पहचानने के लिए इस तरह से प्रेषित uid उपयोग कर सकते हैं।

शुरू करने से पहले

फायरबेस व्यवस्थापक एसडीके के साथ आईडी टोकन को सत्यापित करने के लिए, आपके पास एक सेवा खाता होना चाहिए। किसी सेवा खाते के साथ व्यवस्थापक SDK को प्रारंभ करने के तरीके के बारे में अधिक जानकारी के लिए व्यवस्थापक SDK सेटअप निर्देशों का पालन करें।

क्लाइंट पर ID टोकन वापस ले लें

जब कोई उपयोगकर्ता या डिवाइस सफलतापूर्वक साइन इन करता है, तो फायरबेस एक समान आईडी टोकन बनाता है जो विशिष्ट रूप से उनकी पहचान करता है और उन्हें कई संसाधनों तक पहुंच प्रदान करता है, जैसे फायरबेस रियलटाइम डेटाबेस और क्लाउड स्टोरेज। आप अपने कस्टम बैकएंड सर्वर पर उपयोगकर्ता या डिवाइस की पहचान करने के लिए उस आईडी टोकन का फिर से उपयोग कर सकते हैं। क्लाइंट से आईडी टोकन प्राप्त करने के लिए, सुनिश्चित करें कि उपयोगकर्ता साइन इन है और फिर साइन-इन उपयोगकर्ता से आईडी टोकन प्राप्त करें:

आईओएस

उद्देश्य सी
 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
});
 

एक बार जब आपके पास एक आईडी टोकन होता है, तो आप उस JWT को अपने बैकएंड पर भेज सकते हैं और Firebase Admin SDK का उपयोग करके या किसी तृतीय-पक्ष JWT लाइब्रेरी का उपयोग करके इसे मान्य कर सकते हैं यदि आपका सर्वर किसी भाषा में लिखा हुआ है, जो Firebase मूल रूप से समर्थन नहीं करता है।

फायरबेस व्यवस्थापक एसडीके का उपयोग करके आईडी टोकन की पुष्टि करें

Firebase Admin SDK में ID टोकन को सत्यापित और डिकोड करने के लिए एक अंतर्निहित पद्धति है। यदि प्रदान की गई आईडी टोकन में सही प्रारूप है, तो समय सीमा समाप्त नहीं है, और ठीक से हस्ताक्षरित है, विधि डिकोड की गई आईडी टोकन लौटाती है। आप उपयोगकर्ता या डिवाइस के uid को डीकोड किए गए टोकन से पकड़ सकते हैं।

एक सेवा खाते के साथ व्यवस्थापक SDK को प्रारंभ करने के लिए व्यवस्थापक SDK सेटअप निर्देशों का पालन करें। फिर, एक आईडी टोकन को सत्यापित करने के लिए verifyIdToken() विधि का उपयोग करें:

Node.js

 // idToken comes from the client app
admin.auth().verifyIdToken(idToken)
  .then(function(decodedToken) {
    let uid = decodedToken.uid;
    // ...
  }).catch(function(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 ऐप विकल्प के साथ आरंभ किया गया था, तो एसडीके उस विकल्प के मूल्य का उपयोग करता है।
  • यदि SDK को सेवा खाता क्रेडेंशियल्स के साथ आरंभ किया गया था, SDK सेवा खाते JSON ऑब्जेक्ट के project_id फ़ील्ड का उपयोग करता है।
  • यदि GOOGLE_CLOUD_PROJECT परिवेश चर सेट है, तो SDK प्रोजेक्ट ID के रूप में इसके मान का उपयोग करता है। यह पर्यावरण चर Google अवसंरचना जैसे Google App Engine और Google Compute Engine पर चलने वाले कोड के लिए उपलब्ध है।

तृतीय-पक्ष JWT लाइब्रेरी का उपयोग करके ID टोकन सत्यापित करें

यदि आपका बैकएंड Firebase Admin SDK द्वारा समर्थित भाषा में नहीं है, तो भी आप ID टोकन सत्यापित कर सकते हैं। सबसे पहले, अपनी भाषा के लिए तृतीय-पक्ष JWT लाइब्रेरी ढूंढें । फिर, आईडी टोकन के हेडर, पेलोड और हस्ताक्षर को सत्यापित करें।

पहचानें कि आईडी टोकन का हेडर निम्नलिखित बाधाओं के अनुरूप है:

आईडी टोकन हैडर का दावा
alg कलन विधि "RS256"
kid कुंजी आईडी https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com पर सूचीबद्ध सार्वजनिक कुंजियों में से एक के अनुरूप होना चाहिए

आईडी टोकन के पेलोड को सत्यापित करें कि निम्नलिखित बाधाओं के अनुरूप है:

आईडी टोकन पेलोड का दावा
exp समय सीमा समाप्ति समय भविष्य में होना चाहिए। समय को UNIX युग से सेकंड में मापा जाता है।
iat समय पर चला गया अतीत में होना चाहिए। समय को UNIX युग से सेकंड में मापा जाता है।
aud दर्शक आपका फायरबेस प्रोजेक्ट आईडी होना चाहिए, आपके फायरबेस प्रोजेक्ट के लिए विशिष्ट पहचानकर्ता, जो उस प्रोजेक्ट के कंसोल के 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 के मान का उपयोग करें।

यदि उपरोक्त सभी सत्यापन सफल होते हैं, तो आप आईडी टोकन के uid के रूप में संबंधित विषय ( sub ) का उपयोग कर सकते हैं।