【发布时间】:2020-07-16 16:50:54
【问题描述】:
我已经实现了一个使用 Spring OAuth2 进行身份验证和授权的 Spring Boot 应用程序。
我正在使用 JDBC 令牌存储来管理颁发给客户端的令牌,以在应用程序运行时执行自定义声明验证和其他一些用户状态验证。
问题是,由于我使用传统的 JSESSIONID 和 CSRF 令牌,我找不到新 OAuth 标准的任何优势,因为登录后我会将用户详细信息存储在会话中,并在需要时检索它,对于 OAuth 我存储JWT 令牌本身中的用户详细信息并每次解码令牌以获取用户信息,我也需要访问数据库以进行自定义声明验证,例如 JTI 验证。
每个人都说 JWT 用于无状态应用程序,但使用 JDBC 令牌存储,我持有所有发给每个客户端的令牌。还有一个额外的开销来清除过期的令牌,这将通过 Session 自动完成。我也使用刷新令牌作为实现会话超时的方式。
因此,谁能解释一下,我应该何时使用 JSESSIONID 以及何时使用 JWT?我的应用程序在 AWS 架构上运行。
【问题讨论】:
标签: spring-boot spring-security jwt httpsession spring-oauth2