我正在构建一个带有Angular前端的小型Java客户端,以分发给客户端。
目前,我有一个通过Angular登录的屏幕,该屏幕返回有效的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令牌?
答案 0 :(得分:0)
Firebase Admin SDK不能将其访问范围限制为单个身份验证的用户。它旨在用于完全控制的后端系统。使用服务帐户初始化后,它将有权执行该服务帐户可以执行的任何操作。不应将其分发给最终用户或您完全不信任Firebase项目的任何您不信任的实体。
当涉及到对最终用户进行实际身份验证时,Firebase身份验证仅可用于客户端应用程序(Android,iOS,Web和派生环境)。