अगर आपका Firebase क्लाइंट ऐप्लिकेशन किसी कस्टम बैकएंड सर्वर के साथ डेटा शेयर करता है, तो
उस सर्वर पर वर्तमान में साइन-इन उपयोगकर्ता की पहचान करने की आवश्यकता हो सकती है. ऐसा करने के लिए
सुरक्षित तरीके से, साइन-इन करने के बाद, अपने सर्वर पर उपयोगकर्ता का आईडी टोकन भेजें
के रूप में किया जा सकता है. इसके बाद, सर्वर पर, पुष्टि करें कि
आईडी टोकन बनाएं और इससे uid
को फिर से पाएं. आप इसमें भेजे गए uid
का इस्तेमाल कर सकते हैं
जिससे आपके सर्वर पर वर्तमान में प्रवेश किए हुए उपयोगकर्ता की सुरक्षित रूप से पहचान की जा सकती है.
शुरू करने से पहले
Firebase एडमिन SDK से आईडी टोकन की पुष्टि करने के लिए, आपके पास कोई सेवा होनी चाहिए जोड़ें. इनके लिए, एडमिन SDK टूल सेटअप करने के निर्देशों का पालन करें सेवा खाते से एडमिन SDK टूल शुरू करने के तरीके के बारे में ज़्यादा जानकारी.
क्लाइंट के आईडी टोकन वापस पाएं
जब किसी उपयोगकर्ता या डिवाइस में साइन इन होता है, तो Firebase ऐसा आईडी टोकन जो खास तौर पर उनकी पहचान करता है और उन्हें कई जैसे कि Firebase Realtime Database और Cloud Storage. आप अपने कस्टम बैकएंड में उपयोगकर्ता या डिवाइस की पहचान करने के लिए, उस आईडी टोकन को फिर से इस्तेमाल करें सर्वर. क्लाइंट से आईडी टोकन फिर से पाने के लिए, पक्का करें कि उपयोगकर्ता ने साइन किया हुआ है साइन इन करें और फिर साइन-इन किए हुए उपयोगकर्ता से आईडी टोकन पाएं:
iOS और उसके बाद के वर्शन
Objective-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
// ...
}];
Swift
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
// ...
}
Android
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();
}
}
});
Unity
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
// ...
});
C++
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
});
Java
// idToken comes from the client app (shown above)
FirebaseToken decodedToken = FirebaseAuth.getInstance().verifyIdToken(idToken);
String uid = decodedToken.getUid();
Python
# 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)
C#
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 टूल प्रोजेक्ट आईडी के तौर पर इसकी वैल्यू. यह एनवायरमेंट वैरिएबल इनके लिए उपलब्ध है कोड जो Google इंफ़्रास्ट्रक्चर पर चल रहा है, जैसे कि App Engine और Compute Engine.
तीसरे पक्ष की JWT लाइब्रेरी का इस्तेमाल करके, आईडी टोकन की पुष्टि करें
अगर आपका बैकएंड ऐसी भाषा में है जो Firebase एडमिन के साथ काम नहीं करता SDK टूल के अलावा, आईडी टोकन की पुष्टि अब भी की जा सकती है. सबसे पहले, अपनी भाषा के लिए, तीसरे पक्ष की JWT लाइब्रेरी ढूंढें. इसके बाद, आईडी टोकन के हेडर, पेलोड, और हस्ताक्षर की पुष्टि करें.
पुष्टि करें कि आईडी टोकन का हेडर, इन शर्तों के मुताबिक है:
आईडी टोकन हेडर के दावे | ||
---|---|---|
alg |
एल्गोरिदम | "RS256" |
kid |
'की' आईडी |
यहां दी गई सार्वजनिक कुंजियों में से किसी एक के मुताबिक होना चाहिए
https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com
|
पुष्टि करें कि आईडी टोकन का पेलोड इन शर्तों के मुताबिक है:
आईडी टोकन पेलोड से जुड़े दावे | ||
---|---|---|
exp |
समाप्ति समय | आने वाले समय की होनी चाहिए. समय को UNIX के बाद से सेकंड में मापा जाता है Epoch का इस्तेमाल किया जा सकता है. |
iat |
इस समय जारी हुआ | मौजूदा समय से पहले की तारीख होनी चाहिए. समय को UNIX के बाद से सेकंड में मापा जाता है Epoch का इस्तेमाल किया जा सकता है. |
aud |
ऑडियंस | यह आपका Firebase प्रोजेक्ट आईडी होना चाहिए, जो आपके Firebase का यूनीक आइडेंटिफ़ायर होना चाहिए प्रोजेक्ट की जानकारी देता है, जो उस प्रोजेक्ट के कंसोल के यूआरएल में मिल सकती है. |
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
) का इस्तेमाल कर सकते हैं
आईडी टोकन का uid
के तौर पर इस्तेमाल करें.