在基于HTTP的微服务之间通信的上下文中,我对许多OpenID连接和OAuth2概念感到满意。我目前正在利用Azure AD。
在基于HTTP的场景中,我通常会使用代理流在微服务之间进行通信,其中我需要在访问令牌中维护用户标识。
我的问题是,当使用队列(例如服务总线)和处理来自队列的消息的服务需要调用另一个微服务来收集信息时,处理这个问题的好方法是什么。在我的例子中,被调用的微服务可以根据请求和用户的上下文执行相当复杂的授权。
我知道我基本上可以进行服务到服务的调用,让处理排队消息的微服务强制授权,但是我不想在调用服务中重复这个逻辑。
如果我试图将访问令牌包含在消息中或其他类似的方法中,那么在处理消息时,它将面临过期的风险。
发布于 2020-10-02 21:30:37
在大多数情况下,消息通过队列处理得如此之快,以至于它实际上与同步操作没有什么不同。
如果您担心,您可以始终将下游服务配置为忽略expirey日期,或扩展其有效性。
然而。我会在您的堆栈中划一条线,然后说“此时我接受或拒绝请求”之后,您将不再使用auth令牌。
该命令已被接受,并将由作为具有所需权限的服务用户运行的工作人员处理。它是如何实施和需要多长时间是不重要的。
通过这种方式,您可以调用仍然可以撤销用户权限的点。这使我们很容易确定你的风险和边缘情况。
https://softwareengineering.stackexchange.com/questions/416430
复制相似问题