2017-07-03 72 views
0

我目前正在建设一个微服务在春季启动以下服务基础的应用Auth服务器是否应该与微服务架构中的用户服务结合使用?

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

当用户将其证书的认证服务器后,auth服务器验证它们是否正确,然后返回一个访问令牌。

我的问题是,我应该与用户的服务结合起来,auth服务器,以便查找证书是一个简单的数据库调用,或者我应该让他们作为独立的应用程序,让他们都指向同一个共享的数据库?有更好的选择吗?

回答

1

我通常做的是让他们分开。账户信息(名字,姓氏,联系方式,联系方式,性别等)与认证/授权无关。另外,一个账户可以有多种身份验证方法(即OAuth,uname-pass,私钥),这与账户数据并不真正相关。所以,我把它们作为独立的实体。我知道授权和帐户数据看起来是一样的,但它们代表了两个完全不同的事情,责任非常不同,所以我将它们分开。如果一个用户不得不看到其他用户的名字和姓氏,我不希望将其他用户的凭证从数据库中取出(很多情况可能会出错)。

如果您正在考虑Spring Security的UserService,它会使用Auth服务器。

从安全的立场来看,其真相(auth服务器)的单点并且能够在一个地方解决的问题是一个巨大的优势。

总之,恕我直言,帐户和身份验证可以共享一些属性,但它们是两个不同的东西 - 所以我让他们分开。

希望这会有所帮助。

0

你应该让他们分开,oauth与身份管理无关,但与授权委托相关。

在oauth2中,您当前有4个角色(资源服务器,资源所有者,客户端和授权服务器)询问授权服务器是否必须是资源服务器的一个毫无意义的微服务的一部分。

如果我正确地得到你的情况你的名字是什么用户对应于oauth2术语中的资源所有者角色,一些oauth2流(例如client_credentials)直接允许客户端访问资源服务器,并且不会有用户以任何方式暗示。

相关问题