我正在尝试将OAuth与React(前端)和Meteor(服务器)项目结合使用。我尝试使用OAuth的服务并不是广受欢迎的服务之一(即Google,Facebook),所以我一直在努力弄清楚如何解决这个问题。
Meteor支持安全的服务器端“settings.json”文件,该文件存储应用程序的api密钥和密钥,我可能会使用它来验证客户端。我只是不明白如何。
我发现此程序包https://www.npmjs.com/package/react-oauth-flow和“发送OAuth请求”组件如下所示:
Vitamin
现在,我不明白如何安全地存储/提取Fruit
,因为整个应用程序可供客户端使用?所以我不能使用像Meteor.settings.CLIENT_ID这样的东西,因为应用程序的客户端ID不适用于反应应用程序。
OauthReceiver组件也是如此:
Vitamin.B
Fruits
是如何获取的?同样,不能使用Meteor.settings.CLIENT_SECRET,因为它只对服务器可用,并且组件在客户端呈现。
我觉得这是我的概念性理解问题,如果有人能向我解释,我将非常感激。
答案 0 :(得分:0)
process.env.CLIENT_SECRET
是指在运行时从命令行传递到您的应用程序中的环境变量。如果您使用的是Create React App,则有关实现方法的文档为here。
如果您不使用CRA,则可以从package.json或命令行中将环境变量传递到webpack build命令中。语法如下所示:
{
// the rest of your package.json
scripts: {
"dev": "webpack --env.API_URL=http://localhost:8000 --config webpack.config.dev.js",
"build": "webpack --env.API_URL=https://www.myapi.com --config webpack.config.build.js"
}
}
使用此语法,您可以将您的客户端密钥/等作为环境变量传递到React应用程序。但是,这些将可供客户端使用,并且不如用于OAuth2.0的正确身份验证代码流那么安全。
如果已经有一个后端(您需要这样做),请考虑实施this流以增强安全性。