如何从 SPA(单页 Javascript 浏览器应用程序)安全地请求带有刷新令牌的新访问令牌

问题描述 投票:0回答:1

我们的 React 应用程序使用 Firebase JS SDK。整个登录流程非常出色且安全。使用 Firebase 用来交换代码和不交换代码的中间件身份验证域处理程序。

但是,经过身份验证后,SDK 会将 Web API 密钥、刷新令牌以及所有其他会话凭据和用户数据保存在浏览器的 IndexDB 中。从技术上讲,任何人都可以手动获取这些凭据(或使用在打开网页的上下文中运行的抓取脚本)

保存到 IndexDB:https://github.com/firebase/firebase-js-sdk/blob/master/packages/auth/src/core/persistence/persistence_user_manager.ts#L103

我认为 Firebase 拥有的唯一保护是它只允许来自该客户端的注册来源的特定

client_id
请求。幸运的是,Origin 是唯一无法以编程方式设置或修改的 HTTP 标头之一。

OAuth 指南不鼓励所有这些吗?由于大公司和 SDK 将凭据存储在浏览器存储中,这对于流畅的用户体验来说是一个可接受的漏洞吗?

javascript firebase oauth-2.0
1个回答
0
投票

API 密钥不是 OAuth 规范的一部分。如果您有 API 密钥来访问资源服务器上受保护的资源,则不需要 OAuth。

OAuth 用于代表用户访问受保护的资源。 OAuth中的“Auth”指的是授权。例如,用户需要授权客户端(您的应用程序)访问他们的数据或代表他们执行操作。

我不确定您在谈论运行脚本,因为您访问了网页上的页面。是的,如果脚本在您的计算机上运行,浏览器存储不会提供任何需要访问它们的活动机制。

它可以被加密然后存储,只要您的应用程序不需要任何这些信息,这将使其更加安全。否则,您需要将加密密钥或其他内容存储在您的水疗中心中。使用该应用程序的任何人都可以访问同一个密钥。但对于您提到的那些,只有特定的用户和来自特定的来源对于 SPA 来说是相当安全的。

© www.soinside.com 2019 - 2024. All rights reserved.