我目前正在开发一个REST应用程序,该应用程序必须具有很高的可扩展性。从我对负载平衡的了解中,应该将实际应用程序分成独立的部分。到目前为止,我已经将创建帐户和登录与实际应用程序分开了。我遵循了this教程来实现JWT。那是最佳实践还是可以改进此解决方案?
但是,我将实际的REST应用程序作为一个单独的项目。显然,这两个应用程序需要协同工作。我该怎么做?有没有办法存储令牌并在第二个应用程序中访问令牌?
有人告诉我要遵循微服务架构according to this tutorial。
非常感谢您的帮助!
答案 0 :(得分:0)
使用该auth0博客中所述的JWT模式,这些服务被设计为无状态。实际上,示例代码明确禁用了Spring会话。授权所需的所有信息都完全包含在JWT令牌本身中,并受到密码保护。
因此,无需在多个服务/应用程序之间存储或共享令牌,只要它们都配置有相同的SECRET
。每个负载平衡服务只需要使用JWTAuthorizationFilter
类来验证客户端接收到的令牌。
从最佳实践的角度来看,可以考虑使用oauth2或OpenID Connect服务,而不是从每个服务中“手动”发行JWT令牌。这可以是您自己的服务,也可以使用auth0或okta之类的第三方服务。 (OpenID Connect是oauth2的扩展。)
您可以从https://auth0.com/blog/securing-spring-boot-apis-and-spas-with-oauth2/中了解有关oauth2的更多信息