使用 Hibernate 实现 JWT Spring Security 令牌存储?

Posted

技术标签:

【中文标题】使用 Hibernate 实现 JWT Spring Security 令牌存储?【英文标题】:Implementing JWT Spring Security Token Store with Hibernate? 【发布时间】:2017-03-20 07:46:05 【问题描述】:

我正在努力实现我的第一个生产级 jwt 令牌存储,并遇到了这些表的 sql,https://github.com/spring-projects/spring-security-oauth/blob/master/tests/annotation/jdbc/src/main/resources/schema.sql。当然,使用内存中的 jwt 令牌存储不适用于生产。我在内存令牌存储到 jdbc 令牌存储配置中遇到过。 Hibernate可以做到这一点吗?因为这些表没有 PK ,我想我会为 Hibernate 创建一个列,我可以自动递增它是表的主键和 Hibernate 的 id?

【问题讨论】:

我假设您需要数据库来获取客户详细信息?这很令人困惑,因为您只提到了没有数据库的 JWT 令牌存储。 谢谢先生回答我的问题!是的,我在进一步研究后意识到这一点。我意识到生成的令牌包含的签名是针对服务器端验证其真实性的秘密进行验证的。我想这使得不需要数据库。 @DaveSyer,你介意我再问你一个与 jwt 相关的问题吗?我担心我的jwt被盗的情况。当我研究这种情况时,我遇到了 XSS 攻击(跨端脚本攻击)。我还发现将您的 jwt 设置为 HttpOnly cookie 是一种很好的方法,可以使其对可能注入您网站的 javascript 不可见。你能在 Spring 中讨论这个配置吗?再次感谢您的时间和专业知识。 令牌不是一般意义上的 cookie。并且它们不应该被 JavaScript 客户端访问。因此,如果我是你,我会坚持授权代码授予并保留 cookie 用于会话身份验证(就像我知道你一直在使用的教程中一样)。 谢谢赛尔先生。感谢您抽出宝贵时间回答我的问题。 【参考方案1】:

JWT 令牌不需要数据库(数据存储在令牌中)。有时拥有一个批准商店很有用,但这是一个不同的问题。如果我是你,我不会为此使用 hibernate,但没有什么能阻止你。

【讨论】:

以上是关于使用 Hibernate 实现 JWT Spring Security 令牌存储?的主要内容,如果未能解决你的问题,请参考以下文章

如何执行 Auth0 JWT 令牌用户基于角色的授权

Spring Data JPA 整合Spring

我正在尝试在我的 sprin 启动应用程序中应用 auth0 安全性,但它会引发错误

在 Spring Boot 2 上实现基于过滤器的 JWT 身份验证与 OAuth2 JWT 身份验证

struts2集成Spring,Hibernate的问题!!

笔记之_java整理hibernate