JWT Spring 启动
JWT Spring Boot
请带走这个疑惑
我有一个 Spring 启动应用程序,使用 JWT 具有 spring 安全性。
我一直有一个问题是:Spring如何存储生成的令牌?
查看我的 tomcat 的管理器,我看到这个应用程序有一些打开的会话,但它只与 JWT 一起工作。我请求打开会话没有任何意义。
那么我可以假设 Spring 创建会话来存储生成的令牌吗?
您进行身份验证,然后从颁发者那里获得令牌。
当此令牌被提供给 spring 服务器时,资源服务器需要进行多次验证才能让您使用 api。
JWT 没有加密,它是 encoded
,这意味着每个人都可以看到和阅读它的内容。但它也是 signed
,因此您不能在不破坏标牌的情况下篡改其内容。
所以服务器做的第一件事就是验证签名以确保它没有被篡改。这可以通过多种方式完成,一种是获取令牌并将其发送给发行者,然后基本上询问“你好,这个令牌有效吗?”发行人说“YAY”或“NEY”。
如果需要来回发送 jwts 进行验证,这会产生大量额外的网络流量。
由于代币的标志是通过非对称加密完成的,资源服务器可以定期(例如每 30 分钟)向发行者询问 public 密钥,这样它就可以自己验证代币,而无需经常需要问他们是否有效。
此密钥通常以称为 JWK(Json 网络密钥)的格式发送,然后使用此密钥来验证完整性。如果此验证通过,它可以信任 jwts 内容,并开始检查验证日期、范围和其中的任何额外声明等。
然后如果令牌有效且未过期,您可以选择从 jwt 中的数据构造一个 UserDetails 对象。
如评论中所述。如果使用 JWT,则不需要会话。
你应该禁用会话创建。
您可以在此处阅读本文中有关会话的更多信息 Spring Security Session
您可以在这里阅读 spring 安全性 Session Managment
请带走这个疑惑
我有一个 Spring 启动应用程序,使用 JWT 具有 spring 安全性。
我一直有一个问题是:Spring如何存储生成的令牌?
查看我的 tomcat 的管理器,我看到这个应用程序有一些打开的会话,但它只与 JWT 一起工作。我请求打开会话没有任何意义。
那么我可以假设 Spring 创建会话来存储生成的令牌吗?
您进行身份验证,然后从颁发者那里获得令牌。
当此令牌被提供给 spring 服务器时,资源服务器需要进行多次验证才能让您使用 api。
JWT 没有加密,它是 encoded
,这意味着每个人都可以看到和阅读它的内容。但它也是 signed
,因此您不能在不破坏标牌的情况下篡改其内容。
所以服务器做的第一件事就是验证签名以确保它没有被篡改。这可以通过多种方式完成,一种是获取令牌并将其发送给发行者,然后基本上询问“你好,这个令牌有效吗?”发行人说“YAY”或“NEY”。
如果需要来回发送 jwts 进行验证,这会产生大量额外的网络流量。
由于代币的标志是通过非对称加密完成的,资源服务器可以定期(例如每 30 分钟)向发行者询问 public 密钥,这样它就可以自己验证代币,而无需经常需要问他们是否有效。
此密钥通常以称为 JWK(Json 网络密钥)的格式发送,然后使用此密钥来验证完整性。如果此验证通过,它可以信任 jwts 内容,并开始检查验证日期、范围和其中的任何额外声明等。
然后如果令牌有效且未过期,您可以选择从 jwt 中的数据构造一个 UserDetails 对象。
如评论中所述。如果使用 JWT,则不需要会话。 你应该禁用会话创建。
您可以在此处阅读本文中有关会话的更多信息 Spring Security Session
您可以在这里阅读 spring 安全性 Session Managment