【发布时间】:2020-02-01 03:18:00
【问题描述】:
如果我们使用 oauth2Login() 从 Okta(授权服务器)获取访问令牌,Spring Security OAuth2 Client 使用 HttpSession 存储访问令牌。这将迫使我们只有一个 OAuth2 客户端实例,并且无法在像 Kubernetes 这样的环境中水平扩展。
为了解决这个问题,我在互联网上找到了不同的方法。
使用隐式流,其中访问令牌在浏览器客户端中获取和维护,这对上述方法不太安全。
在后端获得访问令牌后,生成一个新的自定义 JWT 令牌,其中复制了所有声明并将其存储在用户的浏览器中。因此,此后的每个后续请求都可以使用该 JWT 令牌进行身份验证。
使用 Spring-Session 库在多个 OAuth2 客户端实例之间共享 HttpSession,并坚持使用普通的旧 HTTP 会话来存储访问令牌。
什么是更好的方法?
【问题讨论】:
标签: spring spring-security openid spring-security-oauth2 okta