【发布时间】:2021-09-20 02:05:58
【问题描述】:
我看到软件工程师对于在微服务架构中的何处放置身份验证存在不同意见。 许多人支持应该将身份验证放在 API 网关级别,而仅将授权放在微服务级别的想法。
对于身份验证,我的意思是检查在使用凭据进行身份验证后发布的 JWT,例如...
现在,如果 API 网关是我们后端的唯一入口点,那么在对请求进行身份验证时,将它放在 Frontline 中是合理的。 问题是 API 网关作为代理,不应该真正绑定到底层服务,对吧?
假设某些端点需要身份验证,而其中一些端点可以公开访问。我觉得在这种情况下,最好将它放在微服务中,因为微服务知道它公开的 API 的所有细节。
否则,API 网关应该询问微服务端点是否是公共的,或者从数据库中获取此信息。 但是每次访问网关时向服务/数据库执行这个请求不会有太多开销吗?
此外,根据我们用于实现安全层的框架,我们可能没有机会在运行时检查端点的可访问性。因此,每当我们公开端点时,我们都应该重新部署网关以获取有关哪些需要身份验证和哪些不需要身份验证的新信息。
你对这个话题有什么建议?
【问题讨论】:
标签: security authentication authorization microservices