跨微服务传递用户信息

Posted

技术标签:

【中文标题】跨微服务传递用户信息【英文标题】:Passing User info across microservices 【发布时间】:2020-04-05 14:49:06 【问题描述】:

基本上,我有一个微服务 A,它通过检查凭据来验证用户,它需要将用户请求转发到另一个微服务,该微服务对请求进行进一步处理。我们使用基于会话的身份验证。一旦微服务 B 收到请求,它需要记录发起请求的用户。 这些微服务使用 RSocket 相互通信。现在,如果我需要将登录的用户信息传递给微服务 B,我可以将其作为请求的一部分发送,或者我可以创建一个 JWT 令牌并将令牌与请求一起传递。可以在服务 B 处验证令牌以获取授权和用户详细信息。最好的方法是什么?请建议是否有任何其他方式可以以更好的方式完成?

【问题讨论】:

【参考方案1】:

我建议在 RSocket 元数据中发送用户数据。对此,您有两种选择:

    由于 RSocket 是面向连接的,如果从一个服务到另一个服务的所有流量都将由同一用户完成,您可以在连接期间通过流 0 上的元数据推送发送一次用户数据。

    如果不同的请求将针对不同的用户,那么您可以在每个请求的 RSocket 请求元数据中发送用户数据。

元数据可以按照您喜欢的任何方式进行编码。如果需要,您可以在其中放置一个 JWT 令牌,但它不一定是 JWT。您可以轻松地创建自己的对象来发送数据。

【讨论】:

以上是关于跨微服务传递用户信息的主要内容,如果未能解决你的问题,请参考以下文章

使用 Django REST 框架跨微服务共享数据库关系

springcloudalibaba架构(31):SpringCloud实现用户信息在微服务之间传递(Feign和Dubbo)

在调用 Service Fabric 传输中的可靠服务时传递用户和审核信息

SpringBoot+SpringCloud实现登录用户信息在微服务之间的传递

SpringBoot+SpringCloud实现登录用户信息在微服务之间的传递

前后端分离应用——用户信息传递