设置 API 身份认证
为了安全起见,你应该只允许经过身份验证和授权的消费者访问你的 API。API7 网关提供了多种插件来启用身份验证和授权。
本指南将引导你使用 key-auth 插件启用简单的基于密钥的身份验证。
前提条件
添加消费者
消费者是使用你的 API 的实体。本示例将创建一个名为 Alice 的消费者并启用密钥认证。
- 控制台
- ADC
- Ingress Controller
- 选择你的服务发布所在的网关组。
- 从侧边栏选择 消费者。
- 点击 新增消费者。
- 在对话框中,执行以下操作:
- 名称 填写
Alice。 - 点击 新增。
- 在刚刚创建的消费者下,在 插件字段中,搜索
key-auth插件。 - 点击 加号 图标 (+)。
- 在对话框中,执行以下操作:
-
将以下配置添加到 JSON 编辑器:
{
"key": "secret-key"
} -
点击 启用。
要使用 ADC 创建消费者,请创建以下配置:
adc-consumer.yaml
consumers:
- username: Alice
plugins:
key-auth:
_meta:
disable: false
key: secret-key
将配置同步到 API7 网关:
adc sync -f adc-consumer.yaml
使用 ApisixConsumer 自定义资源创建一个 Kubernetes manifest 文件来配置消费者:
consumer.yaml
apiVersion: apisix.apache.org/v2
kind: ApisixConsumer
metadata:
name: alice
# namespace: api7 # replace with your namespace
spec:
authParameter:
keyAuth:
value:
key: "secret-key"
将配置应用到你的集群:
kubectl apply -f consumer.yaml
启用密钥认证
针对服务
要对服务中的所有路由使用密钥认证,请在服务上启用 key-auth 插件。
备注
如果你已经在服务上启用了 key-auth 插件,那么你不能在路由上启用其他认证插件。
- 控制台
- ADC
- Ingress Controller
- 从侧边栏选择网关组的 已发布服务,然后点击要启用认证的服务,例如,版本为
1.0.0的httpbin API。 - 从侧边栏选择 插件。
- 搜索
key-auth插件。 - 点击 加号 图标 (+)。
- 在对话框中,执行以下操作:
-
将以下配置添加到 JSON 编辑器:
{
} -
点击 启用。
更新服务配置以使用密钥认证:
adc-service.yaml
services:
- name: httpbin Service
upstream:
name: default
scheme: http
nodes:
- host: httpbin.org
port: 80
weight: 100
plugins:
key-auth:
_meta:
disable: false
routes:
- uris:
- /ip
name: api-security-ip
methods:
- GET
将配置同步到 API7 网关:
adc sync -f adc-consumer.yaml -f adc-service.yaml
备注
ADC 使用配置文件作为单一事实来源。因此,请确保将消费者和服务配置文件都传递给 adc sync 命令,以使两种配置都生效。
ApisixService 自定义资源尚不可用。