在将流星应用部署到非流星基础设施时,如何为第三方登录服务维护不同的环境配置?



当将流星应用部署到Heroku或其他非流星托管的基础设施并使用第三方OAuth登录服务包(如accounts-facebook)时,必须考虑安全维护每个第三方登录服务的API密钥和API秘密。

如何在该上下文中为不同类型的环境(例如,开发、暂存和生产)安全地维护特定于环境的安全信息?

在维护部署策略时,其中有开发、阶段和生产环境,并且代码在这些层之间移动,从开发箱开始,以生产结束,需要考虑两件事:不向像git这样的VCS系统提交安全信息,以及环境配置维护的便性。

可以考虑为上述用例使用环境变量。

例如,要配置accounts-facebook,您可以在流星应用程序的server/config.js中编写以下代码:
Accounts.loginServiceConfiguration.remove({
  service: "facebook"
});
Accounts.loginServiceConfiguration.insert({
  service: "facebook",
  appId: process.env.FACEBOOK_APP_ID,
  secret: process.env.FACEBOOK_APP_SECRET
});

以下几行是必要的:

appId: process.env.FACEBOOK_APP_ID,
secret: process.env.FACEBOOK_APP_SECRET

process.env使您可以访问所有环境变量。

然后,您可以只设置环境变量FACEBOOK_APP_IDFACEBOOK_APP_SECRET特定于您的环境-开发,登台或生产。