Spring security 基于my micro service架构的中央JWT管理系统
我们正在基于微服务的体系结构中构建我们的应用程序,以实现我们的应用程序。与微服务一样,我们现在看到服务之间发生了许多跨服务交互 为了保护端点,我们计划在此类安全交换之间实现基于JWT的身份验证 我们认为有两种方法可以帮助我们实现这一目标:Spring security 基于my micro service架构的中央JWT管理系统,spring-security,jwt,spring-cloud,netflix-zuul,Spring Security,Jwt,Spring Cloud,Netflix Zuul,我们正在基于微服务的体系结构中构建我们的应用程序,以实现我们的应用程序。与微服务一样,我们现在看到服务之间发生了许多跨服务交互 为了保护端点,我们计划在此类安全交换之间实现基于JWT的身份验证 我们认为有两种方法可以帮助我们实现这一目标: 在每个应用程序中嵌入一个JWT引擎,以生成令牌(@consumer-side)并进行评估(@provider-side)。随着密钥的初始交换,令牌交换将在任何未来通信中顺利进行 拥有一个外部(到应用程序)JWT引擎,它位于分布式应用程序的所有微服务通信之间,负
如果您对这种方法有任何其他意见,请告诉我。这两种方案都可以在SpringCloudZuul中实现 有关更多信息:
我也更喜欢选项2,但您为什么要寻找框架 中央应用程序应该只负责管理私钥和颁发令牌。包括一个解决一个服务的框架可能是过分的 您也可以考虑实现验证服务,但由于应用程序是您的,因此我建议使用非对称密钥并在本地验证令牌,而不是对中心应用程序执行远程验证请求。您可以为您的微服务提供一个简单的库来下载密钥并执行验证。嵌入JWT.io的任何库或从头开始构建它。验证JWT非常简单
如果您需要在到期之前拒绝令牌(例如使用黑名单),则需要一个中心服务。但我不推荐这种方案,因为它打破了JWT的无状态我在搜索中探索了Zuul,不确定Zuul是否真的能够为通过它连接的应用程序生成/管理和验证JWT令牌。Zuul文档中也没有提到提供JWT支持的证据。虽然它有一个令牌中继系统,但这不是JWT令牌。事实上,通过Zuul的每个微服务都使用相同的clientId(如ZuulProxy设置中指定的)。然而,我们希望为每个连接“交换”唯一的令牌,用于内部微服务调用。此外,我不希望我的端点解密和验证令牌。收到令牌后,应将该部件卸载回JWT发动机。如果您有一个使用Zuul满足这一需求的示例/示例,您介意分享吗?喜欢您的建议@pedrofb。