Spring Cloud Security JWT:使用配置服务器/密钥轮换分发公钥
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud Security JWT:使用配置服务器/密钥轮换分发公钥相关的知识,希望对你有一定的参考价值。
如何在Spring Cloud环境中管理用于签署/验证JWT的私钥/公钥?
问题”:
目前我生成一个密钥对。然后将Private + Public Key复制到我的auth-server
应用程序。并将公钥复制到每个资源服务器。
当我现在想要实现“密钥轮换”时,我必须以某种方式为每个服务填充新密钥。
想法:
也许我可以使用spring-cloud-config-server
来存储和分发Key Pairs?
配置服务器已提供数据库登录凭据。那么为什么不在那里存储更敏感的信息呢?
问题(S):
如果这是要走的路:你如何用spring-cloud-config-server
实现密钥对分配?
你有任何安全问题吗?
你是怎么解决这个问题的?我想有更好的解决方案。
编辑:
也许有一些解决方案使用Spring Oauth的security.oauth2.resource.jwt.keyUri
属性为JWKs?
首先,我会有一个隐藏JWT机制的网关。它允许您从网关撤消令牌。如果用户知道他的令牌,则不能在不撤销公钥的情况下撤销该令牌。它看起来像这样:
使用zuul的过滤器和会话范围的bean很容易实现。
其次,如果你在评论中说过,你可以简单地创建一个新的私钥来生成新的令牌。但是所有资源服务器必须能够读取以前生成的所有令牌。因此,您需要在每个资源服务器上都有一个公钥列表,每次收到请求时,都必须尝试使用每个公钥进行验证。也许你可以拥有一个公钥ID(并将id放在每个生成的令牌上),以避免对这个任务进行愚蠢的查找。
对于密钥分发,使用spring cloud总线和rabbit mq似乎对我来说。
您应该考虑使用Spring Cloud Consul Config代替:
Consul提供用于存储配置和其他元数据的键/值存储。 Spring Cloud Consul Config是Config Server和Client的替代方案。在特殊的“bootstrap”阶段,配置被加载到Spring环境中。配置默认存储在/ config文件夹中。基于应用程序的名称和模拟Spring Cloud Config解析属性顺序的活动配置文件创建多个PropertySource实例。
您可以POST /刷新以更新密钥,或watch for changes:
Consul Config Watch利用领事的能力来观看密钥前缀。 Config Watch进行阻塞Consul HTTP API调用,以确定当前应用程序是否有任何相关配置数据已更改。如果有新配置数据,则发布刷新事件。
以上是关于Spring Cloud Security JWT:使用配置服务器/密钥轮换分发公钥的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud Security JWT:使用配置服务器/密钥轮换分发公钥
Spring Cloud Security 实战,退出登录时如何借助外力使JWT令牌失效?
redis jwt spring boot spring security 实现api token 验证
基于Spring Security OAuth2搭建的Spring Cloud 认证中心