如何安全地管理我自己的自定义声明以及 Firebase 身份验证
How to securely manage my own custom claims alongside Firebase Authentication
我使用 Firebase Auth 来管理用户在我的应用程序上的登录,并为他们所属的每个组织的角色和权限自定义声明。
问题是,当用户属于多个组织时,自定义声明超过 Firebase 身份验证设置的 1,000 个字符长度限制。
对于客户端,我可以使用 ID 令牌进行 API 调用,并响应 his/her 声明。但是对于我的网关,这意味着我现在需要在每个用户请求时查询我的数据库。它完全打败了 JWT 的意义。
如何以安全的方式嵌入自定义声明?
- 桌面客户端:ReactJS + Firebase SDK
- API 网关:NodeJS 上的 Express
- 后端:用于用户元数据的 Firestore
通常自定义声明的键和值都很短,你不应该运行到这个限制。短键和值很重要,因为声明是在 JWT 中编码的,它随每个 request/connection.
一起发送
您现在可能正在您的令牌中存储可读的、有意义的值。我建议使用较短的 "codes" 作为声明的 keys/values,类似于 JWT 的三个字母默认属性。这将使您的令牌大小得到控制,并且应该使您回到限制之下,除非真的有很多声明。
我使用 Firebase Auth 来管理用户在我的应用程序上的登录,并为他们所属的每个组织的角色和权限自定义声明。
问题是,当用户属于多个组织时,自定义声明超过 Firebase 身份验证设置的 1,000 个字符长度限制。
对于客户端,我可以使用 ID 令牌进行 API 调用,并响应 his/her 声明。但是对于我的网关,这意味着我现在需要在每个用户请求时查询我的数据库。它完全打败了 JWT 的意义。
如何以安全的方式嵌入自定义声明?
- 桌面客户端:ReactJS + Firebase SDK
- API 网关:NodeJS 上的 Express
- 后端:用于用户元数据的 Firestore
通常自定义声明的键和值都很短,你不应该运行到这个限制。短键和值很重要,因为声明是在 JWT 中编码的,它随每个 request/connection.
一起发送您现在可能正在您的令牌中存储可读的、有意义的值。我建议使用较短的 "codes" 作为声明的 keys/values,类似于 JWT 的三个字母默认属性。这将使您的令牌大小得到控制,并且应该使您回到限制之下,除非真的有很多声明。