跳到主要内容
版本:3.2.16.4

消费者

在本文档中,你将学习 API7 企业版中消费者的基本概念以及为什么需要它们。你将了解一些相关概念,包括如何将消费者信息传递到上游、消费者访问限制以及消费者身份验证和授权。

概述

消费者表示向 API 网关发送请求并使用后端服务的用户应用程序主机。它与身份验证系统一起使用。每个消费者都必须至少配置一个身份验证凭据或使用插件(如 Authz KeycloakOpenID Connect)与外部身份验证系统集成。

下图说明了具有一个路由和两个消费者的 API7 企业版示例。一个消费者 FetchBot 是一个数据获取机器人,另一个消费者 JohnDoe 是一个用户。路由和消费者都启用了 key-auth 插件。因此,请求将使用 API 密钥进行身份验证。要访问内部服务,FetchBot 使用 bot-key 发送其请求,JohnDoe 使用 john-key 发送其请求。


消费者图表示例

此配置可确保只有经过身份验证的请求才能与 /petstore 上公开的内部服务进行交互。

  • 如果向 API7 企业版发送的请求没有任何密钥或密钥错误,则该请求将被拒绝。
  • 如果使用 bot-key 向 API7 企业版发送请求,则该请求将被验证并由 FetchBot 发送以从内部服务获取数据。FetchBot 消费者上的 limit-count 限速插件将生效,将 5 秒窗口内的请求数限制为 2。如果未达到限速阈值,则请求将转发到上游服务。否则,它将被拒绝。
  • 如果使用 john-key 向 API7 企业版发送请求,则该请求将被验证并由 JohnDoe 发送,随后转发到上游端点。

在这种情况下,身份验证插件将根据插件执行阶段limit-count 限速插件之前执行。

消费者身份验证和授权

在基于 API7 企业版的架构中构建身份验证和授权有两种主要设计模式。

第一种也是最常用的方法是通过第三方身份提供商 (IdP)(例如 Keycloak)对请求进行身份验证和授权:

API7 企业版与 IdP 的集成

在某些环境中,请求可能需要经过多个 IdP 才能转发到上游端点。在这种情况下,你可以在一个消费者上配置多个身份验证插件,每个插件对应一个 IdP。在所有 IdP 都授予请求访问权限之前,API7 企业版不会显示成功的响应。

第二种也是更基本的方法是在 API 网关本身上使用内置凭据执行身份验证和授权。到目前为止,凭据 Key Authentication 验证、Basic Authentication 验证、JWT Authentication 验证和 HMAC Authentication验证。

与传统的用户登录类似,每个消费者可以创建多个凭据,所有凭据都链接到一个消费者身份。凭据应安全存储并定期更新。

备注

消费者凭据通过允许多个凭据对应每个消费者来增强灵活性。它们取代了传统的身份验证插件,如 key-auth、basic-auth、JWT-auth 和 HMAC-auth,提供了更友好的用户体验。

相关阅读