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;
}
Czy osiągnąłeś to dzięki elastycznemu środowisku App Engine lub standardowi App Engine? – gbhall