Auth服务器是否应该与微服务架构中的用户服务相结合?

Sta*_*wer 7 authentication spring oauth-2.0 microservices

我目前正在使用以下服务在spring boot中构建基于微服务的应用程序

  • Auth服务器(分发访问令牌)
  • 用户服务(用户信息,如用户名,密码,电子邮件等)
  • 各种其他无关的服务

当用户将其凭据发送到auth服务器时,auth服务器应验证它们是否正确,然后返回访问令牌.

我的问题是,我应该将auth服务器与用户服务结合起来,因此查找凭据是一个简单的数据库调用,还是应该将它们作为单独的应用程序保存,并让它们都指向同一个共享数据库?还有更好的选择吗?

Ste*_*efa 7

我通常做的是将它们分开.帐户信息(名字,姓氏,联系方式,从属关系,性别等)与身份验证/授权无关.此外,帐户可以有多种身份验证方法(即OAuth,uname-pass,私钥),这与帐户数据并不真正相关.所以,我把它们作为单独的实体.我知道auth和帐户数据看起来是一样的,但是它们代表了两种非常不同的东西,责任却截然不同,所以我将它们分开.如果一个用户必须要查看其他用户的名字和姓氏,我不希望从数据库中获取其他用户的凭据(很多可能会出错).

如果您正在考虑来自Spring Security的UserService,它将与Auth服务器配合使用.

从安全角度来看,拥有单一事实真相(auth服务器)并能够在一个地方解决问题是一个巨大的优势.

无论如何,恕我直言,帐户和auth可以共享一些属性,但它们是两个不同的东西 - 因此我将它们分开.

希望这可以帮助.