【发布时间】:2017-05-06 20:57:39
【问题描述】:
也许这是一个奇怪的问题(我是微服务新手)。但我正在寻找有关如何进行此操作的一些信息。不需要特定于 Spring,但这是我目前正在使用的框架。
示例: 假设我们有两个微服务
a)http://myurlfortesting.com:8085/api/rest/serviceone
b)http://myurlfortesting.com:8090/api/rest/servicetwo
我们已经设置了 Spring Zuul(充当 API 网关),其中包含转发传入调用的以下规则:
/rest/one -> http://myurlfortesting.com:8085/api/rest/serviceone
/rest/two -> http://myurlfortesting.com:8090/api/rest/servicetwo
问题... 有没有办法阻止用户直接访问 A 和 B 中提到的服务(只允许通过 API 网关来的服务)?
这可以使用 Springs Zuul(充当 API 网关)通过设置一些额外的过滤器来完成,还是我们在微服务端点中设置它?
甚至想知道是否有办法甚至不处理不通过 API 网关来的微服务端点上的直接调用。
也许这是通过服务器特定规则解决的,与 Spring 无关?
非常感谢,
/D
【问题讨论】:
-
我会查看防火墙设置。
-
您的 Zuul 端点是否在服务器的另一个端口上运行?假设您有防火墙,您可以将服务器的入站流量限制在您的 Zuul 端点所暴露的端口上,并禁止任何人直接访问微服务的端口。
-
@RiaanNel 端点正在服务器的另一个端口上运行。这可以通过其他方式(没有防火墙)以编程方式完成吗?
-
您可以强制端点在转发请求之前检查特定的 HTTP 标头或 Zuul 设置的内容,但这很麻烦且容易规避。根据我过去的经验,“正确”的方法是通过防火墙来做到这一点。你的应用应该负责处理请求。你的防火墙应该负责决定谁可以访问特定的端点。
-
@RiaanNel 可以将您的评论添加为“答案”,以便我可以将其固定在您身上。认为您涵盖/验证了我的问题。谢谢!
标签: java spring rest microservices gateway