Authentication 跨微服务复制会话信息是个好主意吗?

Authentication 跨微服务复制会话信息是个好主意吗?,authentication,session,microservices,Authentication,Session,Microservices,在这里关闭后发布 在微服务体系结构中,通常建议每个服务都有自己的数据库,并且应该通过让B和C在内部消息总线上发布有关更改数据的事件,在服务A的数据库中复制服务B和C需要的任何数据服务A 是否有任何令人信服的理由说明这对会话也不起作用?(我问这个问题是因为我没有看到它以任何形式被提及,正面或负面)。身份验证服务可以发布“会话创建”和“会话删除”消息,以便其他需要身份验证的服务接收,这样,其他服务就可以在会话ID和用户名之间建立链接,而不必为每个请求与auth服务进行检查,从而减少运行时依赖性 (我

在这里关闭后发布

在微服务体系结构中,通常建议每个服务都有自己的数据库,并且应该通过让B和C在内部消息总线上发布有关更改数据的事件,在服务A的数据库中复制服务B和C需要的任何数据服务A

是否有任何令人信服的理由说明这对会话也不起作用?(我问这个问题是因为我没有看到它以任何形式被提及,正面或负面)。身份验证服务可以发布“会话创建”和“会话删除”消息,以便其他需要身份验证的服务接收,这样,其他服务就可以在会话ID和用户名之间建立链接,而不必为每个请求与auth服务进行检查,从而减少运行时依赖性

(我知道有OAuth、OpenID Connect和JWTs,但无论如何,您都需要一个消息总线和状态来撤销它们,我们正在创建一个单一的第一方API生态系统,以服务于单一门户式的用户体验,其中会话似乎更简单、更有意义。Cf.)


(我也知道消息总线可能会出现问题,但这是关键的主干,我们无论如何都要面对,我认为这在实践中不会是一个大问题。)

我能立即看到的更大的问题是,因为在微服务生态系统中对消息的验证最终是一致的,您可能会遇到这样的情况:请求同步命中服务,而会话信息尚未通过总线到达相关服务。当然,如果所有的东西首先都通过公共汽车,那么问题就不那么严重了,但通常情况下,阅读是不会这样做的


我不知道这是否是您在评论消息总线问题时所指的内容,但上述内容可能是一个相当大的问题。这与其说是关于消息传递本身,不如说是关于通信的异步性质。

很好。我认为这不会是一个问题,因为总线和消息处理会非常快,并且事件可以在登录请求完成之前发送,但是当然没有保证。唯一真正可以确定的方法是当业务流程使其不可能或流程/工作流保证了操作的顺序时。两者都很难完全保证,事实上,我希望它们在某种程度上,如果不是非常仔细的设计。如果会话可能泄漏敏感数据,那么imho做这件事是非常危险的