在我的架构中,我有几个需要相互通信的内部服务。我还有一个身份访问管理服务,用于存储有关用户,角色和(粗粒度)权限的信息。微服务/ SOA中服务间通信的首选方法
组件(不是全部):
- 服务A
- 服务B
- IAM服务
,而不是通过IP白名单让服务A和B完全访问对方,我希望他们以由IAM服务管理的用户身份运行。所以这些服务需要一种查询对方角色和权限的方式。我已经考虑了以下方法:
我为服务将在其下运行的用户创建不透明的API密钥。我将它们存储在每个服务上。当服务A调用服务B时,它传递它的API密钥。然后服务B在处理请求之前调用IAM服务来验证密钥并获取有关服务A角色的信息。服务B缓存来自IAM服务的响应以减少讨厌。
我见过涉及API网关的解决方案,但是这里假定流量来自网络之外。我不想将内部流量重定向到外部,只是为了将不透明的令牌转换为有价值的JWT。
什么问题? –