当将流星应用部署到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_ID
和FACEBOOK_APP_SECRET
特定于您的环境-开发,登台或生产。