我目前正在 Spring Boot 中使用以下服务构建基于微服务的应用程序
- 身份验证服务器(分发访问令牌)
- 用户服务(用户信息,如用户名、密码、电子邮件等)
- 各种其他不相关的服务
当用户将其凭据发送到身份验证服务器时,身份验证服务器应验证它们是否正确,然后返回访问令牌。
我的问题是,我应该将身份验证服务器与用户服务结合起来,以便查找凭据是一个简单的数据库调用,还是应该将它们保留为单独的应用程序并让它们都指向同一个共享数据库?有更好的选择吗?
我通常做的就是将它们分开。帐户信息(名字、姓氏、联系方式、隶属关系、性别等)与身份验证/授权无关。此外,一个帐户可以有多种身份验证方法(即 OAuth、uname-pass、私钥),这些方法与帐户数据并不真正相关。因此,我将它们视为独立的实体。我知道身份验证和帐户数据看起来相同,但它们代表两个截然不同的事物,具有截然不同的职责,因此我将它们分开。如果一个用户必须查看其他用户的名字和姓氏,我不希望从数据库中获取其他用户的凭据(很多情况可能会出错)。
如果您正在考虑 Spring Security 的 UserService,它会与 Auth 服务器搭配使用。
从安全角度来看,拥有单点事实(身份验证服务器)并能够在一个地方解决问题是一个巨大的优势。
无论如何,恕我直言,帐户和身份验证可以共享一些属性,但它们是两个不同的东西 - 因此我将它们分开。
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)