时间:2025-03-27 11:13
人气:
作者:admin
在 APISIX 中使用 key-auth 插件实现基于密钥的认证,以下是详细的配置步骤,包括如何保存密钥和证书,以及如何将这些信息分配给客户端 A 和 B。
key)来访问服务 C。key-auth 插件对请求进行身份验证。虽然你提到了证书,但 key-auth 插件本身并不直接处理证书,而是基于预定义的密钥(key)进行认证。通常,你只需为每个客户端生成一个唯一的密钥即可。
# 为客户端 A 生成密钥
echo "client-a-key" > client_a.key
# 为客户端 B 生成密钥
echo "client-b-key" > client_b.key
APISIX 的 Consumer 实体用于管理不同的客户端及其认证信息。我们需要为客户端 A 和 B 各创建一个消费者,并为每个消费者绑定一个唯一的密钥。
通过 APISIX 的 Admin API 创建消费者 A:
curl -X PUT http://{APISIX_ADMIN_API}/apisix/admin/consumers/client-a \
-H 'Content-Type: application/json' \
-d '{
"username": "client-a",
"plugins": {
"key-auth": {
"key": "client-a-key"
}
}
}'
通过 APISIX 的 Admin API 创建消费者 B:
curl -X PUT http://{APISIX_ADMIN_API}/apisix/admin/consumers/client-b \
-H 'Content-Type: application/json' \
-d '{
"username": "client-b",
"plugins": {
"key-auth": {
"key": "client-b-key"
}
}
}'
key-auth 插件现在需要为服务 C 配置路由,并启用 key-auth 插件以保护该路由。
通过 Admin API 创建路由:
curl -X PUT http://{APISIX_ADMIN_API}/apisix/admin/routes/1 \
-H 'Content-Type: application/json' \
-d '{
"uri": "/service-c/*",
"upstream": {
"type": "roundrobin",
"nodes": {
"http://backend-service-c:80": 1
}
},
"plugins": {
"key-auth": {}
}
}'
uri: /service-c/* 表示匹配所有以 /service-c/ 开头的请求路径。upstream: 指向后端服务 C 的地址。plugins.key-auth: 启用 key-auth 插件。客户端 A 和 B 在调用服务时需要携带各自的密钥作为身份验证凭据。密钥应放在 HTTP 请求头中。
curl -X GET http://{APISIX_GATEWAY}/service-c/resource \
-H "apikey: client-a-key"
curl -X GET http://{APISIX_GATEWAY}/service-c/resource \
-H "apikey: client-b-key"
apikey: HTTP 请求头中的键名,默认是 apikey,也可以通过插件配置修改。
client-a-key 和 client-b-key)分发给客户端 A 和 B。通过上述配置:
/service-c/* 所代理。key-auth 插件进行验证,密钥存储在 APISIX 的消费者配置中。作者:仓储大叔,张占岭,
荣誉:微软MVP
QQ:853066980
支付宝扫一扫,为大叔打赏!

上一篇:apisix~csrf插件