keycloak-js 适配器在哪里存储刷新令牌和访问令牌?

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

对于使用 keycloak javascript 适配器 的授权代码流程,似乎令牌(访问令牌和刷新令牌)存储在客户端。但我似乎找不到它存储在哪里?我查看了本地存储和会话存储,但不存在。

oauth-2.0 keycloak
3个回答
1
投票

我认为它将它存储在内存中 - 请参阅项目负责人的以下答案:

https://lists.jboss.org/pipermail/keycloak-dev/2016-July/007654.html


0
投票

Keycloak JS 适配器将数据存储在本地存储中,如果本地存储不可用,则存储在 cookie 中:

来自源代码的片段:

function createCallbackStorage() {
  try {
    return new LocalStorage();
  } catch (err) {}
  return new CookieStorage();
}

0
投票

keycloak js 仅存储在内存中。他们出于安全原因做出了选择。

但问题是它不具备刷新或新选项卡的弹性。

因此,如果您想保持弹性,有两种可能的方法

OWASP 推荐使用 sessionStorage (https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/JSON_Web_Token_for_Java_Cheat_Sheet.md#token-storage-on-client-side) 比受到更多限制之前的 storageLocale 更好

您还可以关注这篇大文章,其中包含一个很好的风险矩阵,其中他们推荐 cookie https://thenewstack.io/best-practices-for-storing-access-tokens-in-the-browser/ 缺点是更多暴露于网络攻击

因此,在身份验证之后,将刷新结束访问令牌存储到适当的存储中,同时在更新时,在注销时删除它们,并在初始化时从存储中检索它们并将它们添加到 init 命令中

因此,您可以在此处查看部分代码示例,但不建议存储:Keycloak 重定向到页面刷新时登录

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.