API网关后面的微服务是否需要验证访问令牌?


10

我有一堆只能通过API网关从外部访问的微服务。

我的API网关设置为OAuth资源,并在将请求下游传递给一个或多个微服务之前验证令牌(检查签名等)。

虽然我的微服务需要令牌才能验证范围和声明,但现在是否还需要该服务来验证令牌?

似乎有些矫kill过正,但我​​无法在线找到有关此情况的任何建议。

在API网关上验证令牌是否足够好?还是最好的做法是稍后再进行验证?


1
内部绕过网关时是否可以访问这些相同的服务?
格雷格·伯格哈特

I cannot find any advice online about this scenario.因为它取决于几个因项目而异的因素。大概在大多数声称是MS体系结构的开发中,他们都不需要它。而且,在这样的体系结构内,应该有一个认证服务器来代替服务(当然也代替网关)。是允许请求通过与否的身份验证服务器。
拉夫

Answers:


3

如果有任何内部调用可以绕过网关,则要么验证每个微服务中的令牌,要么强制所有内部和外部调用都通过网关。

就个人而言,我也不信任内部电话。让它们通过网关,甚至通过防火墙规则限制流量。知道谁在跟谁说话,为什么。如果有人破坏了您的网络,这有助于限制您的攻击面。

这确实引入了单点故障,但是可以通过负载平衡服务器并在发生灾难性问题时配备故障转移服务器来减轻这种风险。

另一方面,如果每个服务都验证令牌,并且有关验证过程的任何事情都发生变化,则您有N + 1个服务要更新。


我听到过这样的论点,即“您也不能信任内部流量”。但是,将应用程序暴露给Intranet上的(相对)少量用户与将同一应用程序暴露给公共Internet却相去甚远。它基本上与扬声器磁铁和回旋加速器之间的差异相同。
罗伯特·哈维

2
@RobertHarvey:我认为我听说过的“不信任内部流量”的理由与其说是合法流量,不如说是合法流量,因为它在发生入侵时会隔离在网络之外。特别是在您的系统处理PII,健康,财务或敏感信息的情况下。如果有人闯入,他们将只能与他人交谈。
格雷格·伯格哈特

如果有人进入您的系统,令牌验证将减少您的问题。您是否应该在受信任的网络中验证令牌(外国人无法访问令牌)可能取决于我们执行的验证类型,以及是否还有不执行验证的方法。例如,性能。回到你的推理。您会在专用网络中实现TLS吗?您是否会对彼此相邻运行的两个组件之间的通信进行加密?可能的答案是取决于
Laiv
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.