跳到主要内容
版本:3.2.14.4

设置 API 身份认证

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

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

前提条件

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

添加消费者

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

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

启用密钥认证

针对服务

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

备注

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

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

    {
    }
  • 点击 启用

针对单个路由

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

  1. 从侧边栏选择网关组的 已发布服务,然后点击要启用认证的服务,例如,版本为 1.0.0httpbin 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"
}

相关阅读