如何以用户(非管理员)身份从 Java 客户端访问 Google Firestore?
How can I access Google Firestore from a Java client as a user (not admin)?
我想连接到 Firestore 并从 Java 客户端执行查询。客户端获得 运行 的人是 Firebase 应用程序的用户,而不是管理员。我在字符串中有用户的 JWT。我不知道如何——以及使用哪些库——我可以
连接到 Firestore。
我尝试了什么:
- 来自 Maven 的包:实现组:'com.google.cloud',名称:'google-cloud-firestore',版本:'2.6.1'
- 此软件包似乎是为在具有管理员权限的安全服务器上使用而设计的,例如使用服务帐户。我找不到通过用户帐户使用它的方法。
- 来自 Maven 的包:实现组:'com.google.firebase',名称:'firebase-firestore',版本:'23.0.3'
- 此包适用于 Android,并引入了 Android 特定依赖项的负载。
为什么我认为这是可能的:
- Java浏览器上的脚本代码运行ning可以使用相应的Java脚本库来做我想做的事情(除了是Java库),使用“firebase”NPM 包
- Android-specific 库被描述为我想要的(android 部分除外)——虽然我不知道如何测试这个假设
我为什么要这样做:
- 改为授予用户管理员权限违反了最小权限原则
- 在客户端应用程序和 Firebase 之间设置一个 运行 具有管理员权限的服务器没有任何明显的目的; Java 基于脚本的客户端也不需要它,并且会引入一整层潜在的安全问题,因为该层中的任何错误 运行 都具有管理员权限。
Firebase/Firestore 没有客户端 Java SDK。 Firebase 为此类访问提供的唯一 SDK 是 Admin SDK,它(如您所说)提供特权管理访问。
如果您想使用来自非Android Java 代码的客户端凭据访问 Firestore,您将必须 access Firestore through its REST API passing the user's ID token(与 OAuth2 令牌相反)以确保安全规则得到执行。
我想连接到 Firestore 并从 Java 客户端执行查询。客户端获得 运行 的人是 Firebase 应用程序的用户,而不是管理员。我在字符串中有用户的 JWT。我不知道如何——以及使用哪些库——我可以 连接到 Firestore。
我尝试了什么:
- 来自 Maven 的包:实现组:'com.google.cloud',名称:'google-cloud-firestore',版本:'2.6.1'
- 此软件包似乎是为在具有管理员权限的安全服务器上使用而设计的,例如使用服务帐户。我找不到通过用户帐户使用它的方法。
- 来自 Maven 的包:实现组:'com.google.firebase',名称:'firebase-firestore',版本:'23.0.3'
- 此包适用于 Android,并引入了 Android 特定依赖项的负载。
为什么我认为这是可能的:
- Java浏览器上的脚本代码运行ning可以使用相应的Java脚本库来做我想做的事情(除了是Java库),使用“firebase”NPM 包
- Android-specific 库被描述为我想要的(android 部分除外)——虽然我不知道如何测试这个假设
我为什么要这样做:
- 改为授予用户管理员权限违反了最小权限原则
- 在客户端应用程序和 Firebase 之间设置一个 运行 具有管理员权限的服务器没有任何明显的目的; Java 基于脚本的客户端也不需要它,并且会引入一整层潜在的安全问题,因为该层中的任何错误 运行 都具有管理员权限。
Firebase/Firestore 没有客户端 Java SDK。 Firebase 为此类访问提供的唯一 SDK 是 Admin SDK,它(如您所说)提供特权管理访问。
如果您想使用来自非Android Java 代码的客户端凭据访问 Firestore,您将必须 access Firestore through its REST API passing the user's ID token(与 OAuth2 令牌相反)以确保安全规则得到执行。