繁体   English   中英

使用Spring在微服务中进行身份验证

[英]Authentication in Microservices with spring

我想重构一个整体的Spring Boot应用程序,基本上是一个具有登录功能的Web应用程序。 我们已经有一个Security实现,该实现可以将会话ID存储为cookie,但是我对此几乎一无所知,并且对于该主题来说是全新的。 由于独立的身份验证服务,JWT似乎是微服务的更好解决方案。

所以我的问题是:

  • 创建JWT身份验证服务并交换会话ID实现的大量工作吗? (因为我是为了我的学士学位论文而做的,所以有明确的截止日期)

  • 使用微服务时可以保留会话ID吗?

  • 也许还有其他方法可以实现身份验证?

创建JWT身份验证服务并交换会话ID实现的大量工作吗? (因为我是为了我的学士学位论文而做的,所以有明确的截止日期)

这个问题很难回答,因为它取决于您的特定实现的紧密程度。 这当然不是小事。

使用微服务时可以保留会话ID吗?

是的,但是您需要弄清楚如何跨微服务联合会话(即,如何从一个服务到另一个服务获取会话中的信息)。 总体而言,这表示服务之间存在紧密耦合的风险,因此我建议仅将此视为过渡步骤。

也许还有其他方法可以实现身份验证?

一天多长。 话虽这么说,但没有特别的理由,我通常会选择坚持到底。

微服务中不建议使用典型的用户会话。您应使用无状态架构和令牌(存储在数据库或JWT中的令牌)。

最好使用Spring Boot OAuth2

您应该使用Spring Boot实现一个授权服务器和资源服务器。

授权服务器:

  1. 选择令牌存储方式(JWT,Jdbc等)
  2. 配置客户端详细信息
  3. 添加用于用户信息的RESTful Api或启用/ oauth / check_token api。(由资源服务器调用)

资源服务器:

  1. 在Spring boot OAuth2属性中设置user-info-uri或token-info-uri。
  2. 扩展ResourceServerConfigurerAdapter类以保护URL映射。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM