Wie sichere ich meine Google Cloud Endpoints-APIs mit der Firebase-Token-Überprüfung?

Mein Setup:

Java-Backend auf Google App Engine mit APIs, die mit Google Cloud Endpoints erstellt wurdenMobile-Clientanwendungen, die generierte Clientbibliotheken für die oben genannten Endpunkte enthalten. Auch in Firebase für die Authentifizierung und die Datenbank integriert.

Meine Absicht ist, dass sich ein Benutzer der mobilen Client-Anwendungen mithilfe der Firebase-Authentifizierung bei der mobilen App anmelden und dann eine Verbindung zu einer der Back-End-APIs herstellen kann, die ihrerseits einige Verarbeitungsschritte ausführen und dann Daten lesen oder in / schreiben. aus der Firebase-Datenbank.

Um die APIs auf dem Server zu sichern, muss ich die integrierte verifyIdToken () -Methode des Firebase Server SDK verwenden (siehe ID-Token überprüfen auf Firebase), um das von der Clientanwendung übergebene ID-Token eines Benutzers zu dekodieren. Wie kann ich VerifyIdToken () bei asynchroner Ausführung in eine API-Methode in GAE integrieren? Bisher habe ich etwas Ähnliches wie das Folgende:

@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;
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage