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