跳到主要内容
版本:3.2.15.2

管理消费者凭据

消费者是指使用你的API的应用程序或开发者。在服务上启用身份验证可以让你控制访问,要求消费者在访问API之前获得凭据。

在服务上启用的身份验证插件就像给 API 上了一把锁,而消费者凭据则是解锁它们的钥匙。在 API7 网关中,你需要一个唯一的名称和至少一个凭据来设置消费者。

消费者可以使用多种不同类型的凭据,所有凭据在身份验证方面都被视为平等的。

本教程将指导你创建消费者和配置身份验证。

前提条件

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

Key Authentication

添加具有 Key Authentication 凭据的消费者

  1. 从侧边栏选择网关组的消费者

  2. 点击新增消费者

  3. 在对话框中,执行以下操作:

    • 名称字段中,输入 Alice
    • 点击新增
  4. 认证凭据选项卡下,点击添加 Key Authentication 凭据

  5. 在对话框中,执行以下操作:

    • 名称字段中,输入 primary-key
    • Key字段中,选择手动输入,然后输入 alice-primary-key
    • 点击新增
  6. 再次尝试添加另一个名为 backup-key 的密钥认证凭据,Key 设置为 alice-backup-key

为已发布的服务启用 Key Authentication

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

  1. 从侧边栏选择网关组的已发布服务,然后选择要修改的服务,例如,版本为 1.0.0httpbin

  2. 从侧边栏选择插件,然后点击启用插件

  3. 搜索 key-auth 插件,然后点击启用

  4. 在对话框中执行以下操作:

    • 将以下配置添加到JSON 编辑器

      {
      }
  • 点击启用

验证

请按照以下步骤验证 Key Authentication。

发送不带 Key 的请求

发送不带 apikey 的请求:

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

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

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

发送携带不合法 Key 的请求

发送一个请求头中携带不合法(不属于任何消费者)的 Key 的请求:

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

由于这个 Key 不属于任何消费者凭据,你将收到一个 HTTP/1.1 401 Unauthorized 响应,其请求正文如下:

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

发送携带正确 Key 的请求

所有 Key Authentication 凭据都被视为平等的,可以在你的 API 请求中使用,多个凭据之间没有优先级之分,使用效果都完全相同。

使用正确的 Key 发送请求,你将收到一个 HTTP/1.1 200 OK 响应,其请求正文如下:

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

你将收到一个 HTTP/1.1 200 OK 响应,其请求正文如下:

{
"origin": "192.168.0.102, 35.259.159.12"
}

使用另一个凭据发送请求:

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

使用正确的 Key 发送请求,你将收到一个 HTTP/1.1 200 OK 响应,其请求正文如下:

{
"origin": "192.168.0.102, 35.259.159.12"
}

Basic Authentication

添加具有 Basic Authentication 凭据的消费者

  1. 从侧边栏选择网关组的消费者

  2. 点击新增消费者

  3. 在对话框中,执行以下操作:

    • 名称字段中,输入 Alice
    • 点击新增
  4. 认证凭据选项卡下,点击Basic Authentication选项卡,然后点击添加 Basic Authentication 凭据

  5. 在对话框中,执行以下操作:

    • 名称字段中,输入 primary-basic
    • 用户名字段中,输入 Alice
    • 密码字段中,选择手动输入,然后输入 alice-password
    • 点击新增
  6. 再次尝试添加另一个名为 backup-basic 的 Basic Authentication 凭据,用户名为 Alice-backup,密码为 alice-backup-password

为已发布的服务启用 Basic Authentication

要在已发布服务中的所有路由上使用 Basic Authentication,请在服务级别启用 basic-auth 插件。

  1. 从侧边栏选择网关组的已发布服务,然后选择要修改的服务,例如,版本为 1.0.0httpbin

  2. 从侧边栏选择插件,然后点击启用插件

  3. 搜索 basic-auth 插件,然后点击启用

  4. 在对话框中执行以下操作:

    • 将以下配置添加到JSON 编辑器

      {
      }
  • 点击启用

验证

请按照以下步骤验证 Basic Authentication。

发送不带用户名和密码的请求

发送不带 Basic Authentication 凭据的请求:

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

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

{"message":"Missing authorization in request"}

发送携带不合法用户名和密码的请求

发送一个请求头中携带不合法(用户名密码不匹配,或用户名不存在)的认证凭据的请求:

curl -i "http://127.0.0.1:9080/ip" -u alice:wrong-password

由于用户名和密码不匹配,你将收到一个 HTTP/1.1 401 Unauthorized 响应,其请求正文如下:

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

发送携带正确用户名和密码的请求

所有 Basic Authentication 凭据都被视为平等的,可以在你的 API 请求中使用,多个凭据之间没有优先级之分,使用效果都完全相同。

使用正确的用户名和密码发送请求,你将收到一个 HTTP/1.1 200 OK 响应,其请求正文如下:

curl -i "http://127.0.0.1:9080/ip" -u alice:alice-password 

你将收到一个 HTTP/1.1 200 OK 响应,其请求正文如下:

{
"origin": "192.168.0.102, 35.259.159.12"
}

使用另一个凭据发送请求:

curl -i "http://127.0.0.1:9080/ip" -u alice-backup:alice-backup-password

你将收到一个 HTTP/1.1 200 OK 响应,其请求正文如下:

{
"origin": "192.168.0.102, 35.259.159.12"
}

相关阅读