在微服务架构中组织用户和身份验证

Den*_*nov 7 architecture authentication spring authorization microservices

在我们的微服务中,我们将拥有自定义身份验证/授权服务,又名 UAA,对吗?使用用户控制器来登录、令牌验证或创建用户对我来说很有意义。

但还有第二个用例。我们还希望有一些用户管理功能,用于向用户添加收藏夹联系人、使用一些附加信息、用户地址等填充个人资料。在第二个用例中,我希望为此目的提供第二个微服务。您有什么建议或最佳实践是什么?

  1. 有一个用于用户管理的微服务,例如他的个人资料、联系人、凭据以及登录/令牌提供

  2. 有两个微服务 - 一个用于管理用户凭据、令牌提供(uaa),第二个用于用户附加信息

  3. 有两个微服务 - 一个用于完全独立的用户管理,第二个用于身份验证、令牌提供,并且如果需要一些用户数据或验证用户凭据,则将使用用户服务的其余 api

对我来说,3.选项很好,但我想听听你的意见。

小智 10

我的建议是有两个微服务:

  1. 一种用于用户管理,例如他的个人资料、联系人、凭据。在此微服务上,用户将创建帐户、发送重置密码等。

  2. 一个用于授权(例如:带有 JWT 令牌的 Oauth2)。该微服务仅用于授权(对于 ouath2 和 JWT,用于根据用户名/邮件和密码生成 JWT 令牌)。

当用户创建帐户时,将向授权微服务发出包含用户凭据和权限的请求,以通知新用户已创建。用户重置密码或删除用户也是如此。

授权微服务将接收该请求并将用户凭据和权限保存在自己的数据库中,例如 Redis 或 PosgreSQL。每个登录您的服务/应用程序的用户将首先调用授权微服务,将收到一个包含用户元数据(名称、角色和其他信息)的 jwt 令牌,并使用该令牌将请求发送到您的应用程序/服务的其他微服务,例如用于用户管理、订单服务或其他。