8

Moja konfiguracja:Jak zabezpieczyć moje interfejsy API Google Cloud Endpoints za pomocą weryfikacji tokenu Firebase?

  • Java backend hostowane na Google App Engine zawierające API, które zostały utworzone za pomocą Google Cloud Endpoints
  • aplikacji mobilnych klientów zawierających wygenerowanych bibliotek klienta dla punktów końcowych wymienionych powyżej. Również zintegrowany z Firebase do uwierzytelniania i bazy danych.

Moim zamiarem jest, aby użytkownik aplikacji klienckich na telefon komórkowy mógł zalogować się do aplikacji mobilnej za pomocą uwierzytelniania Firebase, a następnie połączyć się z dowolnym interfejsem API zaplecza, który z kolei wykona część przetwarzania, a następnie odczyta lub zapisz dane do/z bazy danych Firebase.

Aby zabezpieczyć interfejsy API na serwerze, myślę, że będę musiał użyć wbudowanej metody verifyIdToken() pakietu Firebase Server SDK do (zobacz Verifying ID Tokens w Firebase), aby zdekodować token użytkownika przekazany od klienta podanie. Ponieważ verifyIdToken() działa asynchronicznie, w jaki sposób mogę go zintegrować z metodą API w GAE? Mam coś podobnego do poniższego tej pory:

@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

Czy osiągnąłeś to dzięki elastycznemu środowisku App Engine lub standardowi App Engine? – gbhall

Odpowiedz

7

Jak to zadania uwierzytelniania jest uruchomiona asynchronicznie w kolejce zadań, można czekać, aż to zadanie zostanie zakończone i kontynuowane w synchroniczny sposób, opcjonalnie można dodać słuchaczy onSuccess, onFailure i onComplete.

+0

Działa to świetnie, dzięki! – user2181948

Powiązane problemy