【发布时间】:2022-04-05 08:08:36
【问题描述】:
我正在研究微服务架构,现在主要关注 api 网关和安全性。
我发现有两种不同的方法:
1- 身份验证在网关之外,即用户
- 必须先进行身份验证,
- 获取令牌,
- 然后可以通过网关调用服务 我见过的最常见的场景,每个人都在实施/呈现),如图表链接中所述 Authentication outside of the gateway
2- 另一种方法是将所有东西都放在网关后面,也就是说,用户
- 尝试通过网关访问受保护的资源/服务,
- 他也通过网关被重定向到身份提供者登录页面,
- 通过身份验证,将令牌传回给客户端/用户,
- 最后到达请求服务,一切都通过网关的一个http调用,这将导致一些额外的调用(授权代码流,url回调客户端,如图链接中所述Authentication behind the gateway
虽然有些人可能会谈论第二种方法,但我似乎找不到任何实际的实现或详细描述。这让我想问……为什么?
如果我遵循微服务设计,我自然会使用第二个实现,但没有……每个人似乎都在使用第一个。
根据我读到的内容,是的,这需要更多的努力,因为您必须重新路由必要的身份验证和授权端点,但是是这样吗?难道没有其他的理由让我们更喜欢第一个而不是第二个吗?
有什么见解吗?
【问题讨论】:
-
从客户的角度来看,第二种方法通常不太方便。他编写的每个函数都需要检查,是否必须进行身份验证并最终处理它。在第一种方法中,您可以轻松地将所有功能与身份验证分开,并在到达端点之前对其进行一次。
-
不确定我是否完全理解。通过客户端,您的意思是例如您的 webApp 对吗?对我来说,即使在第一种方法中,您仍然需要检查您编写的每个函数/方法的令牌(除非您不想保护特定方法)。但我确实同意它更容易实施的事实,而不是第二种方法。我的意思是,有利也有弊,我只是觉得……总体上没有很好地描述安全性。
-
我投票结束这个问题,因为它与help center 中定义的编程无关。
标签: security authentication microservices gateway ocelot