Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在纯前端应用程序上存储服务凭据的位置和方式_Javascript_Frontend - Fatal编程技术网

Javascript 在纯前端应用程序上存储服务凭据的位置和方式

Javascript 在纯前端应用程序上存储服务凭据的位置和方式,javascript,frontend,Javascript,Frontend,我希望构建一个纯前端应用程序,在客户端运行JavaScript,即浏览器。我的应用程序应该向第三方服务发出请求,这需要某种身份验证方法 后端框架为这类事情提供配置文件,但由于JS代码都是在客户机上解释的,因此配置文件不能成为捆绑包的一部分 是否有任何方法可以安全地在客户端中存储服务API密钥、凭据等,或者我是否也需要一个后端解决方案 搜索最流行的配置文件框架(Angular和React)只会导致存储特定于环境的URL。我开始认为我已经走到了死胡同,这根本无法实现。取决于。。。您不希望用户能够嗅出

我希望构建一个纯前端应用程序,在客户端运行JavaScript,即浏览器。我的应用程序应该向第三方服务发出请求,这需要某种身份验证方法

后端框架为这类事情提供配置文件,但由于JS代码都是在客户机上解释的,因此配置文件不能成为捆绑包的一部分

是否有任何方法可以安全地在客户端中存储服务API密钥、凭据等,或者我是否也需要一个后端解决方案


搜索最流行的配置文件框架(Angular和React)只会导致存储特定于环境的URL。我开始认为我已经走到了死胡同,这根本无法实现。

取决于。。。您不希望用户能够嗅出您必须发送给第三方的任何秘密,但是在OAuth2的隐式授权的情况下,您实际上可以在浏览器中启动并完成它

您将重定向到第三方进行登录/身份验证,然后用户将被发送回您,并带有一段时间内有效的访问令牌

根据规范,该令牌实际上以URL片段的形式发送,因此它被发送到浏览器而不是服务器。如果您想获得服务器的访问令牌,则需要前端代码来解析URL片段并发送其内容

如果API允许您从浏览器进行连接,则可以将所有内容保留在浏览器中,而不需要后端服务器来处理凭据。但并非每个API都允许纯粹的前端身份验证和API调用


所以,这取决于

您可以将服务api凭据存储在客户端缓存或cookie等中吗?对通过网络发送并存储在浏览器中是否安全


如果保持凭据安全是要求的一部分,我会在后端进行身份验证,或者使用第三方服务为您执行此操作

当然不能。您不希望前端像您一样向第三方发出请求,因此请让用户登录他们自己的帐户或代理通过您自己的后端进行访问。即使可能,您也不应在客户端站点上存储安全敏感数据(如凭据),因为它无法得到保护。@jon so,基本上,为请求的抽象/委托构建自己的后端是一条路,除非所讨论的第三方服务是用户可以登录的地方,例如Twitter。和我想的差不多。谢谢你的澄清。如果你回答这个问题,我会接受的。@Ferya完全正确!这就是我问这个问题的原因。不过,问题中可能没有说清楚。我要补充一点。然后答案是否定的。没有办法在客户端安全地存储凭据。客户端存储选项有:cookies(文本文件,易于访问)或本地存储(同样,易于访问)。您可以加密凭证,但任何技术用户都可以进行反向计算(特别是最终用户也可以访问您的JS代码)。所以,不要在这上面浪费你的时间。根据这个答案和Feryal和jon对这个问题的评论,我可以决定做什么和怎么做。尤其是不该做的事。谢谢