首页 > 解决方案 > 有没有办法在不存储私钥 json 文件的情况下使用 firebase 设置服务器?

问题描述

我正在尝试创建具有独特架构的应用程序。将有一个 android 应用程序、一个服务器和一个桌面客户端。问题是,服务器将由用户在本地托管(遵循 linux 上的 mopity 架构)。也就是说,每个用户都将在本地托管他们自己的服务器,只有他们使用,他们可以在不使用客户端/Android 应用程序时将其关闭。

此应用程序要求服务器能够将信息发送到 android 应用程序,并且似乎唯一真正的解决方案是 firebase 云消息传递(尽管如果有好的替代方案请纠正我)。问题似乎是firebase需要服务器存储并提供私钥json文件的路径。将此密钥分发给所有用户显然是不安全的。我想知道这个问题是否有更好的解决方案?

我试过的:

服务器(C#)firebase 连接代码:

FirbaseApp FBApp = FirebaseApp.Create(new AppOptions()
            {
                Credential =
                    GoogleCredential.FromFile(
                        "/path/to/json/file/firebase-adminsdk*.json"),
            });

如果可能的话,我真的很希望能够维护这个架构,但是如果这根本不可能,请告诉我。

标签: c#androidfirebasefirebase-cloud-messaging

解决方案


如果您希望服务器能够以管理权限访问 Firebase,则该服务器将需要有权访问这些凭据。这意味着它可以完全访问您的 Firebase 项目中的所有内容。

如果您不希望服务器具有此类访问权限,则服务器不应访问这些凭据。

安全的解决方案是在您构建的自定义端点上托管您希望服务器能够调用的相关功能,并且只有您可以部署。这可以在您控制的服务器中,也可以在 Cloud Functions 之类的服务器上。这里的关键是只有您(或您信任的合作者)可以访问该服务器,以便其他人无法从那里获取密钥或更改代码。这也允许您在需要时收紧授权规则(例如,允许谁向谁发送通知)。


推荐阅读