浏览器本机发送承载令牌的方式

时间:2020-09-06 00:31:37

标签: javascript oauth-2.0

我目前正在阅读RFC 6749 (“The OAuth 2.0 Authorization Framework”)RFC 6750 (“The OAuth 2.0 Authorization Framework: Bearer Token Usage”)

我想知道是否有一种方法可以从基于浏览器的客户端发送Authorization: Bearer ...标头,该标头会自动将令牌链接到请求,就像Authorization: Basic ...一样,可以通过发送来触发回复中的WWW-Authenticate: Basic realm="..."。然后浏览器要求输入用户名和密码,并在下一个请求中自动设置Authorization标头。

是否可以对承载令牌执行类似的操作?尤其是要将令牌链接到跨页面刷新工作的主机或类似上下文?

我要问的原因是为了避免不必要的延迟,因为它不必加载和解析一些JavaScript,这些JavaScript从诸如LocalStorage并设置Authorization标头中提取承载令牌。这也将使我拥有通过Ajax或Fetch请求 not 请求的受保护资产,例如图片(img标签)。

我知道一个常见的解决方法是将承载令牌替换为会话cookie。但我想知道是否还有其他解决方案来解决这个问题。

1 个答案:

答案 0 :(得分:2)

访问令牌使用情况

没有任何选项可以在HTML请求期间自动发送访问令牌。它们仅在您的代码明确请求时才发送。这样可以防止Cookie常见的某些漏洞。

混合方法

我开始认为,现代SPA的最佳全面选择是采用以下方法:

  • 在浏览器中使用访问令牌-支持快速的跨域API调用
  • 使用仅HTTP cookie来处理与页面重新加载和多标签浏览相关的方面-cookie还可在其中存储或链接到刷新令牌

处理HTML资产

感觉cookie也是唯一适用于您的方案的选项。如您所说,在完全下载Javascript捆绑包之前,将根据图像请求发送一个cookie。

我的场景

我有不同的原因想要在多标签浏览过程中同时使用Cookie和令牌的好处来解决某些token renewal problems问题。我希望整体行为是SPA的行为。

有限的使用习惯

在我的情况下,我使用了cookie,但是使用的方式非常有针对性。也许在您的情况下,您可以做一些类似的事情,同时继续使用访问令牌进行API调用。