8

मेरे सेटअप:मैं अपने Google क्लाउड एंडपॉइंट्स API को फ़ायरबेस टॉकन सत्यापन के साथ कैसे सुरक्षित करूं?

  • जावा बैकएंड पर Google अनुप्रयोग इंजन एपीआई कि
  • मोबाइल ग्राहक अंतिमबिंदुओं ऊपर उल्लेख किया है के लिए उत्पन्न क्लाइंट लाइब्रेरी युक्त एप्लिकेशन को Google मेघ अंतिम बिंदु का उपयोग कर बनाया गया था जिसमें आयोजन किया। प्रमाणीकरण और डेटाबेस के लिए फायरबेस के साथ भी एकीकृत।

मेरे मंशा है कि मोबाइल ग्राहक आवेदनों की एक उपयोगकर्ता Firebase प्रमाणीकरण का उपयोग मोबाइल एप्लिकेशन में लॉग इन करने, तो बैकएंड एपीआई, जो बदले में कुछ प्रसंस्करण करना होगा और फिर पढ़ा में से किसी से कनेक्ट सकेंगे या फायरबेस डेटाबेस से/डेटा लिखें।

सर्वर पर एपीआई को सुरक्षित करने के लिए, मुझे लगता है कि मुझे फ़ायरबेस सर्वर एसडीके की अंतर्निहित सत्यापित IdToken() विधि का उपयोग करना होगा (Verifying ID Tokens फ़ायरबेस पर देखें) क्लाइंट से उपयोगकर्ता के आईडी टोकन को डीकोड करने के लिए आवेदन। चूंकि सत्यापित IdToken() असीमित रूप से चलाता है, मैं इसे GAE में एपीआई विधि के साथ कैसे एकीकृत करूं? मैं अब तक निम्न जैसा कुछ है: यह प्रमाणीकरण कार्य के रूप में

@ApiMethod(name = "processAndSaveToDB", httpMethod = "post") 
    public Response processAndSaveToDB(@Named("token") String token) { 

     Response response = new Response();   

     // Check if the user is authenticated first 
     FirebaseAuth.getInstance().verifyIdToken(idToken) 
      .addOnSuccessListener(new OnSuccessListener() { 
       @Override 
       public void onSuccess(FirebaseToken decodedToken) { 
        String uid = decodedToken.getUid(); 

        // do bulk of processAndSaveToDB() method 

       }) 
      .addOnFailureListener(new OnFailureListener() { 
       @Override 
       public void onFailure(Exception e) { 

        // throw unauthorized exception 

      }); 

    return response; 
} 
+0

क्या आपने ऐप इंजन फ्लेक्सिबल एनवायरनमेंट या ऐप इंजन स्टैंडर्ड एनवायरनमेंट का उपयोग करके इसे हासिल किया है? – gbhall

उत्तर

7

कार्य कतार में अतुल्यकालिक रूप से चल रहा है, आप जब तक कि कार्य समाप्त हो गया और तुल्यकालिक तरह से जारी रखने के लिए किया जाता है इंतजार कर सकते हैं, वैकल्पिक रूप से आप श्रोताओं जोड़ सकते हैं onSuccess, onFailure और पूर्ण पर।

Task<FirebaseToken> authTask = FirebaseAuth.getInstance().verifyIdToken(idToken) 
.addOnSuccessListener(new OnSuccessListener() { 
     @Override 
     public void onSuccess(Object tr) {//do smtg } 
    }).addOnFailureListener(new OnFailureListener() { 
     @Override 
     public void onFailure(Exception excptn) {//do smtg } 
    }).addOnCompleteListener(new OnCompleteListener() { 
     @Override 
     public void onComplete(Task task) {//do smtg } 
    }); 
    try { 
     Tasks.await(authTask); 
    } catch(ExecutionException | InterruptedException e){ 
     //handle error 
    } 
    FirebaseToken decodedToken = authTask.getResult(); 
+0

यह बहुत अच्छा काम करता है, धन्यवाद! – user2181948

संबंधित मुद्दे