具有有效 Firebase 令牌的 Firebase 身份验证不受信任 java 客户端

Firebase authentication untrusted java client with valid Firebase token

我正在构建一个带有 Angular 前端的小型 Java 客户端,以便分发给客户端。

目前我有一个通过 Angular 的登录屏幕,其中 returns 是一个有效的 firebase 令牌。我不确定的是如何使用该令牌根据应用程序的 Java 部分对用户进行身份验证,以便 Java 客户端可以执行文件上传等操作。

借助 Admin SDK,我可以执行以下操作:

public FirebaseAuth firebaseAuth() throws IOException {
    FileInputStream serviceAccount = new FileInputStream(new ClassPathResource(SERVICE_ACCOUNT_KEY).getFile());

    FirebaseOptions options = new FirebaseOptions.Builder()
            .setCredentials(GoogleCredentials.fromStream(serviceAccount))
            .setDatabaseUrl(String.format("https://%s.firebaseio.com/", DATABASE_NAME))
            .build();

    FirebaseApp.initializeApp(options);

    return FirebaseAuth.getInstance();
}

然后我可以继续针对 Firebase 验证令牌并获取用户详细信息的标准流程。

由于我要向最终用户分发 Angular 前端和 Java 客户端,所以我无法使用 Admin SDK。

我该如何解决这个问题?我应该研究其他类型的流程吗?或者我可以以某种方式使用 Firebase 令牌吗?

Firebase Admin SDK 无法将其访问范围限定为单个经过身份验证的用户。它旨在用于您完全控制的后端系统。使用服务帐户初始化,它将有权执行服务帐户可以执行的任何操作。它无意分发给最终用户或您不信任的任何实体,无法完全访问您的 Firebase 项目。

在实际验证最终用户时,Firebase 身份验证仅用于客户端应用程序(Android、iOS、Web 和衍生环境)。