【问题标题】:API Gateway: Mixture Of Authenticated and Unauthenticated EndpointsAPI 网关:经过身份验证和未经身份验证的端点的混合
【发布时间】:2020-08-02 07:55:24
【问题描述】:

我一直致力于创建一个利用 API 网关的微服务架构的平台。我坚持的一个问题是,如何让 API 网关同时处理经过身份验证和未经身份验证的端点。

Here is a simplified and rough diagram of the system I am thinking about

对于我的系统,我将使用 Auth0,我想我想让 service 使用公钥而不是 gateway 检查令牌是否有效强> 这样做。如果我想在某一天公开我的一项服务,这给了我更大的灵活性。而且我想我想保持我的网关很小。

但是网关将如何处理已验证和未验证端点的混合? IE。我想让 GET 端点“打开”,而 POST 端点需要登录。哪个实体应该管理端点是“开放”还是“需要登录”、网关还是服务?

  1. 我是否应该始终让网关将请求传递给服务,无论用户是否登录,并让服务返回401?
  2. 或者网关是否应该包含一些关于哪些端点需要登录的逻辑,如果请求中没有令牌则返回401?完全跳过服务

【问题讨论】:

    标签: microservices api-gateway system-design


    【解决方案1】:

    是的,它是在您将使用的网关上配置的。例如,在 AWS API 网关上,您可以为接入点使用 lambda 自定义网关授权器。授权函数可以通过为所有请求返回 ok 来“授权”到该端点。

    更多阅读here

    【讨论】:

      【解决方案2】:

      在我看来,这是 API 网关的主要职责之一。它可能取决于特定的 API 网关,但我们使用的一种优雅的解决方案是:

      • 所有微服务都定义了它们的端点,以及它们是否在描述符文件中受到保护。
      • 在部署时(可能在 CI 中),它会在 API 网关中注册这些定义
      • API Gateway 接受请求并检查它是否受到保护
      • 如果受保护,API 网关可能会使用用户信息丰富请求
      • 网关以外的所有请求都被安全地接受以被服务接受

      这样我们将身份验证与业务逻辑/功能分开

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-25
        • 2017-03-25
        • 1970-01-01
        • 1970-01-01
        • 2019-02-10
        • 2019-06-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多