【问题标题】:Where is the best place to perform authentication in a microservice architecture?在微服务架构中执行身份验证的最佳位置在哪里?
【发布时间】:2021-09-20 02:05:58
【问题描述】:

我看到软件工程师对于在微服务架构中的何处放置身份验证存在不同意见。 许多人支持应该将身份验证放在 API 网关级别,而仅将授权放在微服务级别的想法。

对于身份验证,我的意思是检查在使用凭据进行身份验证后发布的 JWT,例如...

现在,如果 API 网关是我们后端的唯一入口点,那么在对请求进行身份验证时,将它放在 Frontline 中是合理的。 问题是 API 网关作为代理,不应该真正绑定到底层服务,对吧?

假设某些端点需要身份验证,而其中一些端点可以公开访问。我觉得在这种情况下,最好将它放在微服务中,因为微服务知道它公开的 API 的所有细节。

否则,API 网关应该询问微服务端点是否是公共的,或者从数据库中获取此信息。 但是每次访问网关时向服务/数据库执行这个请求不会有太多开销吗?

此外,根据我们用于实现安全层的框架,我们可能没有机会在运行时检查端点的可访问性。因此,每当我们公开端点时,我们都应该重新部署网关以获取有关哪些需要身份验证和哪些不需要身份验证的新信息。

你对这个话题有什么建议?

【问题讨论】:

    标签: security authentication authorization microservices


    【解决方案1】:

    严格从安全角度来看。 从我所看到的微服务架构来看,网关只执行身份验证,每个微服务/端点至少需要处理自己的授权检查。

    因此,对于您的公共 URL,网关不会执行任何身份验证检查。 对于您的私有/安全端点,网关将在微服务级别执行身份验证检查和授权检查,但您仍需要处理要遵循的业务规则。

    例子:

    • /public/article1 - 不需要任何身份验证或授权检查
    • /private/newsletter - 需要来自网关的身份验证,但可能不需要来自微服务的授权检查
    • /private/account - 应该要求网关和微服务进行身份验证和授权检查,以确保您只访问您的帐户。

    【讨论】:

      猜你喜欢
      • 2021-10-30
      • 1970-01-01
      • 2015-09-11
      • 2020-05-31
      • 2021-01-07
      • 1970-01-01
      • 2020-03-13
      • 2018-09-24
      • 2017-05-28
      相关资源
      最近更新 更多