管理消费者凭据
消费者是指使用你的API的应用程序或开发者。在服务上启用身份验证可以让你控制访问,要求消费者在访问API之前获得凭据。
在服务上启用的身份验证插件就像给 API 上了一把锁,而消费者凭据则是解锁它们的钥匙。在 API7 网关中,你需要一个唯一的名称和至少一个凭据来设置消费者。
消费者可以使用多种不同类型的凭据,所有凭据在身份验证方面都被视为平等的。
本教程将指导你创建消费者和配置身份验证。
前提条件
Key Authentication
添加具有 Key Authentication 凭据的消费者
- 控制台
- ADC
- Ingress Controller
从侧边栏选择网关组的消费者。
点击新增消费者。
在对话框中,执行以下操作:
- 在名称字段中,输入
Alice
。 - 点击新增。
- 在名称字段中,输入
在认证凭据选项卡下,点击添加 Key Authentication 凭据。
在对话框中,执行以下操作:
- 在名称字段中,输入
primary-key
。 - 在Key字段中,选择手动输入,然后输入
alice-primary-key
。 - 点击新增。
- 在名称字段中,输入
再次尝试添加另一个名为
backup-key
的密钥认证凭据,Key 设置为alice-backup-key
。
consumers:
- username: Alice
credentials:
- name: primary-key
type: key-auth
config:
key: alice-primary-key
- name: backup-key
type: key-auth
config:
key: alice-backup-key
将配置同步到 API7 企业版:
adc sync -f adc-consumer.yaml
待更新。
为已发布的服务启用 Key Authentication
要在已发布服务中的所有路由上使用密钥认证,请在服务级别启用 key-auth
插件。
- 控制台
- ADC
- Ingress Controller
从侧边栏选择网关组的已发布服务,然后选择要修改的服务,例如,版本为
1.0.0
的httpbin
。从侧边栏选择插件,然后点击启用插件。
搜索
key-auth
插件,然后点击启用。在对话框中执行以下操作:
将以下配置添加到JSON 编辑器:
{
}
- 点击启用。
更新服务配置以使用 Key Authentication
services:
- name: httpbin
upstream:
name: default
scheme: http
nodes:
- host: httpbin.org
port: 80
weight: 100
plugins:
key-auth:
_meta:
disable: false
routes:
- uris:
- /ip
name: get-ip
methods:
- GET
将配置同步到 API7 企业版:
adc sync -f adc-consumer.yaml -f adc-service.yaml
ADC 使用配置文件作为单一可信来源。因此,请确保将消费者和服务配置文件都传递给 adc sync
命令,以使两种配置都生效。
ApisixService 自定义资源尚不可用。
验证
请按照以下步骤验证 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 凭据的消费者
- 控制台
- ADC
- Ingress Controller
从侧边栏选择网关组的消费者。
点击新增消费者。
在对话框中,执行以下操作:
- 在名称字段中,输入
Alice
。 - 点击新增。
- 在名称字段中,输入
在认证凭据选项卡下,点击Basic Authentication选项卡,然后点击添加 Basic Authentication 凭据。
在对话框中,执行以下操作:
- 在名称字段中,输入
primary-basic
。 - 在用户名字段中,输入
Alice
。 - 在密码字段中,选择手动输入,然后输入
alice-password
。 - 点击新增。
- 在名称字段中,输入
再次尝试添加另一个名为
backup-basic
的 Basic Authentication 凭据,用户名为Alice-backup
,密码为alice-backup-password
。
即将推出。
即将推出。
为已发布的服务启用 Basic Authentication
要在已发布服务中的所有路由上使用 Basic Authentication,请在服务级别启用 basic-auth
插件。
- 控制台
- ADC
- Ingress Controller
从侧边栏选择网关组的已发布服务,然后选择要修改的服务,例如,版本为
1.0.0
的httpbin
。从侧边栏选择插件,然后点击启用插件。
搜索
basic-auth
插件,然后点击启用。在对话框中执行以下操作:
将以下配置添加到JSON 编辑器:
{
}
- 点击启用。
即将推出。
ApisixService 自定义资源尚不可用。
验证
请按照以下步骤验证 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"
}
相关阅读
- 核心概念
- API 安全
- API 消费