我在游戏项目中使用了Firebase的匿名登录认证和实时数据库SDK。玩家用用户ID来识别,这个用户ID永远不会暴露给客户端。此外,这个UserID被发送到firebase RTDB来更新玩家的信息。为了保护用户的写权限,我使用auth变量对数据库设置了一些安全规则。我有类似的安全规则:
{"my_db_path" {
".write": "auth != null &&$user_id == auth.uid"}}
但是在Firebase Auth文档中,建议使用令牌ID对用户进行身份验证。在对这个令牌的使用进行了一些研究之后,我明白我必须使用Firebase Admin SDK来验证这个令牌,然后使用这个经过验证的User ID在后端对用户进行身份验证。我的问题是,是否有必要验证tokenID,即使我有安全规则,已经检查客户的UserID与auth的UserID?
我已经尝试设置Firebase Admin SDK到我的Unity项目,但我有一些问题与nuget包。所以我想知道,我真的需要验证令牌和使用Firebase管理SDK在我的统一项目?
Firebase安全规则自动验证客户端SDK提供的令牌。然后,用户的UID在规则中作为auth.uid
可用。没有必要在安全规则中使用Admin SDK,甚至不可能这样做。
你只需要Admin SDK,如果你正在为你的应用程序提供一个自定义后端,并且需要验证向它发出请求的用户已被认证。Admin SDK不能在客户端应用程序代码中使用,只能在后端使用。