手动生成单个 auth-token 以持续使用,以验证应用程序以访问数据库 - 好还是坏?

Manually generate single auth-token for use in constant, to authenticate app to access database - Good or bad?

我正在使用 Firebase 为我的 Android 应用程序创建一个非常简单的许可系统。
系统的相关部分工作——有点简化——像这样;我正在生成一个唯一密钥,将其存储在数据库中并将该密钥发送给购买该应用程序的用户。用户在应用程序中激活密钥,将设备 ID 和一些其他数据写入该许可密钥。

但是,任何有一点知识的人都可以很容易地进入数据库并修改数据,从而使任何许可证在他们的设备上有效!

现在开始我的(非常)科学研究观察(耶!)- 我已经阅读了有关 Firebase 令牌生成器的信息。一开始它看起来很有前途,尽管文档说我不应该将它(或我的 Firebase 秘密)直接包含在应用程序代码中,这使它成为一个糟糕的解决方案。
然而,我后来想到 手动生成一个具有特定 'uid' 的单一身份验证令牌,并将其作为常量存储在应用程序代码中,然后在每个应用程序中使用该令牌进行身份验证需要访问我的数据库(换句话说,我不会在应用程序代码中包含我的 Firebase 机密)。
然后,我将确定是否应使用 Firebase 规则授予客户端访问数据库的权限,以检查客户端是否已通过身份验证,以及它是否具有正确的 'uid'.

现在我的问题是;像这样构建系统是不是不好的做法,或者我可以把这个想法变成现实吗?

如果您将此令牌存储在您的应用程序中,那么其他人将很容易反编译您的 APK 并获取令牌,从而使他们能够向您的数据库发出未经您授权的请求。

如果您只想确保只有注册的客户端有权访问数据库,请考虑使用 Firebase Anonymous Authentication,这将允许您为每台设备生成唯一的会话令牌。

如果这对您来说不够灵活,您可以在自己的服务器上生成令牌并使用 Firebase Custom Authentication 进行身份验证。这使您可以完全控制每个令牌的内容,而无需在 APK 中对令牌或密码进行硬编码。