微服务链如何处理带有限生命周期令牌的授权问题?
问题描述
场景情况
某企业采用微服务架构,拥有Bob、Charlie和Dave三个微服务。用户Alice发起操作请求,向Bob提交JWT令牌做身份验证。Bob验证Alice有权限发起该请求后,开始处理任务。为完成任务,Bob需要调用Charlie,而Charlie又需调用Dave。整个流程为异步执行——Alice向Bob发送请求并收到“验证通过”的回复后,即认为请求会被妥善处理,系统最终会达成最终一致性。
避免混淆代理问题
混淆代理问题提示我们,Bob调用Charlie和Dave时需谨慎。Bob仅验证了Alice是否有权访问自身服务,但未必知晓Alice是否有权访问Charlie和Dave的服务。常见的解决方案是Bob在请求中附带JWT,由Charlie和Dave自行验证。
出现的问题
若流程中出现故障会怎样?例如,Dave崩溃4小时,或网络故障导致无法连接?作为遵循最终一致性的微服务,我们可假设故障恢复后流程会继续,但此时JWT已失效——尽管Alice发起请求时令牌完全有效。系统陷入不一致状态:Charlie无法重复向Dave发起请求(Dave会因令牌无效拒绝),也无法获取新令牌(否则可能冒充Alice,这在零信任环境中是绝对禁止的)。
核心疑问
大型微服务架构通常如何处理此类问题?这似乎是微服务与最终一致性概念下的常见问题,但目前尚未找到相关文献或博客文章探讨该主题。
内容的提问来源于stack exchange,提问作者MrThaler
相关产品推荐
相关产品推荐

