【发布时间】:2020-09-18 09:59:44
【问题描述】:
如果我的服务通过 Sync HTTP 进行通信,我会将 JWT 令牌传递给每个服务,以便每个服务对请求进行身份验证,并确保它只为经过身份验证的用户提供数据。
但是,如果我将通信机制更改为使用异步消息传递(例如 RabbitMQ),我现在将如何在发起事件的用户范围内验证事件。是否应该将相同的 JWT 作为事件消息的一部分传递。我发现这种机制存在问题,因为 JWT 可能在服务处理消息时已经过期,这意味着消息将不会得到处理。
这是一般方法和最佳实践,还是应该创建某种受信任的策略并将其作为别名传递给原始 JWT,说明用户可以做什么和有权访问什么,或者是否有不同的方法?
【问题讨论】:
-
你真的需要这个 JWT 令牌来处理从 SQS 消费的消息吗?难道你不能只将 JWT 的使用限制在你的入口点,验证采取,然后将其余数据发送到 SQS 进行进一步处理吗?
-
虽然这是一个选项,并且目前在我的应用程序中使用。我的应用程序是一个 SaaS 应用程序,它有多个租户和一个。我需要确保这些租户数据永远不会交叉和 b。对数据的访问尽可能安全,例如有人不能只是手动将消息放置在允许一个租户访问另一个租户数据的 SQS 队列上。如果这是 HTTP,我只会传递相同的令牌,因此我会询问消息传递中是否有类似的方式。
标签: authorization microservices messaging