集中式 Auth 服务器或用户每个微服务一个 db?
Centralized Auth server or One db per microservice for users?
我正在设计两个微服务,一个用于教师,另一个用于学生。现在我的问题是存储用户和进行身份验证授权的最佳方法是什么:-
集中式 Auth 服务器将存储用户角色以及所有信息。
集中式Auth服务器,仅存储角色,但用户信息将存储在各自服务(学生、教师)的数据库中
没有集中式 Auth 服务器,而是根据请求正文中的角色将登录请求重定向到学生或教师,这将由网关负责。
我想知道这些方法的优缺点。如果有更好的方法,请分享。
P.S :- 多个角色可以分配给一个用户。
我会选择第一种方法。而不是“集中式授权”服务器,它更像是一个“授权微服务”。
现在重要的部分是如何处理身份验证本身。通常,您可以使用会话或 JWT。
对于微服务,我认为 JWT 非常适合。如果您使用会话,您基本上“集中”了您的身份验证和授权。我的意思是,在用户通过身份验证后,每次用户发出请求时,所有对此响应做出反应的微服务都必须检查集中会话。这不仅会增加延迟,而且不适合分布式系统。使用微服务的要点是制作服务的副本,以便水平扩展。
如果您使用 JWT,微服务只需要密钥来验证令牌。基本上没有用于身份验证信息的集中存储(会话)。
关于“授权服务”,我建议您只存储与身份验证和授权相关的数据(包括与身份验证相关的用户信息。phone号码,电子邮件,姓名等。您可能会在情况下用户需要更改密码,忘记密码等)。与特定角色相关的其他特定数据可以存储在相应的服务中。
我正在设计两个微服务,一个用于教师,另一个用于学生。现在我的问题是存储用户和进行身份验证授权的最佳方法是什么:-
集中式 Auth 服务器将存储用户角色以及所有信息。
集中式Auth服务器,仅存储角色,但用户信息将存储在各自服务(学生、教师)的数据库中
没有集中式 Auth 服务器,而是根据请求正文中的角色将登录请求重定向到学生或教师,这将由网关负责。
我想知道这些方法的优缺点。如果有更好的方法,请分享。
P.S :- 多个角色可以分配给一个用户。
我会选择第一种方法。而不是“集中式授权”服务器,它更像是一个“授权微服务”。
现在重要的部分是如何处理身份验证本身。通常,您可以使用会话或 JWT。
对于微服务,我认为 JWT 非常适合。如果您使用会话,您基本上“集中”了您的身份验证和授权。我的意思是,在用户通过身份验证后,每次用户发出请求时,所有对此响应做出反应的微服务都必须检查集中会话。这不仅会增加延迟,而且不适合分布式系统。使用微服务的要点是制作服务的副本,以便水平扩展。
如果您使用 JWT,微服务只需要密钥来验证令牌。基本上没有用于身份验证信息的集中存储(会话)。
关于“授权服务”,我建议您只存储与身份验证和授权相关的数据(包括与身份验证相关的用户信息。phone号码,电子邮件,姓名等。您可能会在情况下用户需要更改密码,忘记密码等)。与特定角色相关的其他特定数据可以存储在相应的服务中。