Как защитить свои API Google Cloud Endpoints с помощью проверки токена Firebase?

Моя настройка:

Серверная часть Java, размещенная в Google App Engine, содержит API, созданные с использованием конечных точек Google Cloud.Мобильные клиентские приложения, содержащие сгенерированные клиентские библиотеки для конечных точек, упомянутых выше. Также интегрирован с Firebase для аутентификации и базы данных.

Мое намерение состоит в том, чтобы пользователь мобильных клиентских приложений мог войти в мобильное приложение с использованием аутентификации Firebase, а затем подключиться к любому из внутренних API-интерфейсов, которые, в свою очередь, выполнят некоторую обработку, а затем прочитают или запишут данные в / из база данных Firebase.

Чтобы защитить API на сервере, я думаю, что мне придется использовать встроенный метод verifyIdToken () пакета Firebase Server SDK для (см.Проверка идентификационных токенов в Firebase) для декодирования токена ID пользователя, переданного из клиентского приложения. Так как verifyIdToken () работает асинхронно, как бы я интегрировал его с методом API в 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;
}

Ответы на вопрос(1)

Ваш ответ на вопрос