我想连接到Firestore并从Java客户端执行查询。客户端由Firebase应用程序的用户运行,而不是管理员。我有一个字符串形式的用户JWT。我不知道的是,我是如何做到的——以及使用哪些库连接Firestore
What I tried:
- 来自Maven的包:实现组:` com.google。Cloud ',名称:'google-cloud-firestore',版本:'2.6.1'
- 这个包似乎是为了在一个有管理权限的安全服务器上使用,例如使用一个服务帐户。我无法找到与用户帐户一起使用它的方法。
- 来自Maven的包:实现组:` com.google。Firebase ',名称:' Firebase -firestore',版本:'23.0.3'
- 这个包是为Android设计的,它吸收了大量Android特定的依赖项。
为什么我认为这是可能的:
- 在浏览器上运行的Javascript代码可以使用相应的Javascript库来完成我想要的(除了作为Java库),使用"firebase"li> android特定的库被描述为我想要的(除了android部分)——尽管我不知道如何测试这个假设
为什么我想这样做:
- 给用户admin权限违反了最小权限原则
- 在客户端应用程序和Firebase之间建立一个以管理员权限运行的服务器并没有明显的目的;基于javascript的客户端也不需要它,并且会引入整个层的潜在安全问题,因为该层中的任何错误都是在管理员权限下运行的。
Firebase/Firestore没有客户端Java SDK。Firebase为这种访问提供的唯一SDK是Admin SDK,它(如您所说)提供特权,管理访问。
如果你想从非android Java代码中使用客户端凭据访问Firestore,你必须通过它的REST API传递用户的ID令牌(而不是OAuth2令牌)来访问Firestore,以确保安全规则被强制执行。