如何解决Spring Cloud Gateway背后的两个应用程序之间的内部API调用
在Spring Cloud Gateway后面,我们有两个API应用程序A1和A2。网关通过Spring Security提供OAuth2身份验证,并根据路由将带有令牌的请求传递给API A1或A2。 A1和A2将验证每个API调用的令牌。现在,A2 API需要调用A1 API。
使用网关强制执行的OAuth2来实现这种情况的最佳方法是什么? A2可以不通过网关直接调用A1,而是如何通过令牌验证吗?
解决方法
这是一个API体系结构问题,最终,这些问题几乎总是与客户端有关,而不是与API本身有关。
常见要求
-
核心API /微服务应能够彼此自由调用,并且不受范围/受众周围的OAuth约束的影响。
-
每个API客户端可以对令牌执行的操作都是可控制的。如果有人从Web UI /移动应用程序中窃取令牌,那么他们应该无法在该应用程序范围之外执行高特权操作。
我的观点
-
将API分为两层,以控制客户端对Core API的访问,尤其是高特权操作
-
在入口点API中应用OAuth安全性,例如令牌验证
-
如果可能,将核心API(A1和A2)与OAuth分离。这通常是通过锁定网络/虚拟私有云来实现的。
-
通过非OAuth机制(例如HTTP标头)将用户上下文/声明传递给A1和A2。
总结
允许任何客户端基于路径调用任何Core API操作的通用网关不是可以扩展的安全设计。我的blog post探索了这类问题。
一个很深的话题,但我希望这能为您提供一些有关如何扩展API的指导。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。