【发布时间】:2020-08-14 17:16:39
【问题描述】:
我目前正在开发具有多个 Quarkus 服务和 Keycloak RBAC 的 PoC。像魅力一样工作,轻松引导并开始实现功能。
但是我遇到了一个我无法解决的问题。想象一下:
- 用户访问受保护的服务
-
quarkus-oidc扩展通过HTTP重定向获取令牌,cookie中的JWT持续30分钟 - 用户通过身份验证并返回到 Web 应用程序
- 用户在应用程序中工作,填写表格和数据
- 数据由 JWT 丰富的 REST 调用存储(我们通过
hibernate-validator进行验证) - 用户再次工作,耗时超过 30 分钟
- 想要存储另一个条目,但步骤 3 中的令牌现已过期,API 调用失败
- 用户不会高兴,我也不高兴
可能的解决方法:
- 让 JWT 的持续时间超过当前的 30 分钟,但这只会推迟问题并打开一些安全门
- 将用户的输入存储在本地存储中,以便稍后在令牌刷新后恢复(我们也会这样做,以免丢失用户的工作)
- 在用户不知情的情况下在 JS 中“静默”刷新令牌。有没有最佳做法?
- 我错过了一些重要的东西,现在互联网告诉我一个更好的应用程序架构。
感谢互联网!
【问题讨论】:
-
我没用过,所以没办法,但我知道 Keycloak 自带 JavaScript 库。其中,它可以让您轻松执行选项 3(在后台刷新令牌),请参阅 keycloak.org/docs/latest/securing_apps/…
标签: jwt keycloak openid-connect quarkus