实施 JWT 认证
JWT 认证是一种使用 JSON Web Token (JWT) 对 API 客户端进行身份认证的安全且无状态的方法。它涉及在成功身份认证后向客户端颁发签名Token,客户端在后续请求中包含该Token。JWT 封装了 用户身份和角色等声明,使 API 无需查询后端数据库即可验证请求。此方法非常适合需要轻量级和快速身份认证的可扩展、分布式应用程序。但是,由于 JWT 在过期之前一直有效,因此必须小心使用较短的过期时间或实施Token撤销以增加安全性。
在本指南中,你将实现一个场景,其中有两个消费者使用 JWT 认证 向 APISIX 进行身份认证,每个消费者具有不同的限流限速配额。一旦实施,消费者应该能够访问上游服务并将消费者 ID 转发到上游服务,从而为额外的业务逻辑提供选项。
创建消费者
消费者是指使用 API 的应用程序或开发者。在使用 APISIX 内置身份认证方法时,你应该始终创建消费者。
创建一个具有可选自定义 ID 和 30 秒窗口内一个请求的限流限速配额的消费者 johndoe:
curl "http://127.0.0.1:9180/apisix/admin/consumers" -X PUT \
-H "X-API-KEY: ${ADMIN_API_KEY}" \
-d '{
"username": "johndoe",
"labels": {
"custom_id": "john-doe-junior"
},
"plugins": {
"limit-count": {
"count": 1,
"time_window": 30,
"rejected_code": 429
}
}
}'
如果你希望实施额外的业务逻辑,自定义 ID 将转发到上游服务。
创建另一个具有可选自定义 ID 和 30 秒窗口内两个请求的限流限速配额的消费者 janedoe:
curl "http://127.0.0.1:9180/apisix/admin/consumers" -X PUT \
-H "X-API-KEY: ${ADMIN_API_KEY}" \
-d '{
"username": "janedoe",
"labels": {
"custom_id": "jane-doe-senior"
},
"plugins": {
"limit-count": {
"count": 2,
"time_window": 30,
"rejected_code": 429
}
}
}'