跳到主要内容
版本:3.2.14.4.1

设置 API 身份认证

为了安全起见,你应该只允许经过身份验证和授权的消费者访问你的 API。API7 网关提供了多种插件来启用身份验证和授权。

本指南将引导你使用 key-auth 插件启用简单的基于密钥的身份验证。

前提条件​

  1. 安装 API7 企业版。
  2. 在网关组上有一个运行的 API。

添加消费者​

消费者是使用你的 API 的实体。本示例将创建一个名为 Alice 的消费者并启用密钥认证。

  1. 选择你的服务发布所在的网关组。
  2. 从侧边栏选择 消费者。
  3. 点击 新增消费者。
  4. 在对话框中,执行以下操作:
  • 名称 填写 Alice。
  • 点击 新增。
  1. 在刚刚创建的消费者下,在 插件字段中,搜索 key-auth 插件。
  2. 点击 加号 图标 (+)。
  3. 在对话框中,执行以下操作:
  • 将以下配置添加到 JSON 编辑器:

    {
    "key": "secret-key"
    }
  • 点击 启用。

启用密钥认证​

针对服务​

要对服务中的所有路由使用密钥认证,请在服务上启用 key-auth 插件。

备注

如果你已经在服务上启用了 key-auth 插件,那么你不能在路由上启用其他认证插件。

  1. 从侧边栏选择网关组的 已发布服务,然后点击要启用认证的服务,例如,版本为 1.0.0 的 httpbin API。
  2. 从侧边栏选择 插件。
  3. 搜索 key-auth 插件。
  4. 点击 加号 图标 (+)。
  5. 在对话框中,执行以下操作:
  • 将以下配置添加到 JSON 编辑器:

    {
    }
  • 点击 启用。

针对单个路由​

要对特定路由使用密钥认证,请在路由上启用 key-auth 插件,而不是在服务上启用。

  1. 从侧边栏选择网关组的 已发布服务,然后点击要启用认证的服务,例如,版本为 1.0.0 的 httpbin API。
  2. 在已发布的服务下,从侧边栏选择 路由。
  3. 选择你的目标路由,例如,getting-started-anything。
  4. 搜索 key-auth 插件。
  5. 点击 加号 图标 (+)。
  6. 在对话框中,执行以下操作:
  • 将以下配置添加到 JSON 编辑器:

    {
    }
  • 点击 启用。

验证​

请按照以下步骤验证密钥认证。

发送不带密钥的请求​

发送不带 apikey 头的请求:

curl -i "http://127.0.0.1:9080/ip"

由于未提供密钥,你将收到一个 HTTP/1.1 401 Unauthorized 响应,其请求正文如下:

{"message":"Missing API key found in request"}

发送带有错误密钥的请求​

发送带有错误密钥的 apikey 头的请求:

curl -i "http://127.0.0.1:9080/ip" -H "apikey: secret-key"

由于密钥错误,你会收到一个 HTTP/1.1 401 Unauthorized 响应,其请求正文如下:

{"message": "Unauthorized"}

```text
{"message":"Invalid API key in request"}

发送带有正确密钥的请求​

发送带有正确密钥的 apikey 头的请求:

curl -i "http://127.0.0.1:9080/ip" -H "apikey: secret-key"

使用正确的密钥发送请求,你将收到一个 HTTP/1.1 200 OK 响应,其请求正文类似:

{
"origin": "192.168.0.102, 35.259.159.12"
}

相关阅读​