APISIX支持的身份認證方式


安全防護

多種身份認證方式: key-auth, JWT, basic-auth, wolf-rbac。
IP 黑白名單
IdP 支持: 支持外部的身份認證服務,比如 Auth0,Okta,Authing 等,用戶可以借此來對接 Oauth2.0 等認證方式。
限制速率
限制請求數
限制並發
防御 ReDoS(正則表達式拒絕服務):內置策略,無需配置即可抵御 ReDoS。

APISIX支持的身份認證方式: key-auth, JWT, basic-auth, wolf-rbac。

一、key-auth 是一個認證插件,它需要與 consumer 一起配合才能工作。

添加 Key Authentication 到一個 service 或 route。 然后,consumer 將其密鑰添加到查詢字符串參數或標頭中以驗證其請求。

屬性
key: 不同的 consumer 對象應有不同的值,它應當是唯一的。不同 consumer 使用了相同的 key ,將會出現請求匹配異常。

curl http://127.0.0.1:9080/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"username": "jack",
"plugins": {
"key-auth": {
"key": "auth-one"
}
}
}'


$ curl http://127.0.0.2:9080/index.html -H 'apikey: auth-one' -i
HTTP/1.1 200 OK

 

 

二、jwt-auth 是一個認證插件,它需要與 consumer 一起配合才能工作。

添加 JWT Authentication 到一個 service 或 route。 然后 consumer 將其密鑰添加到查詢字符串參數、請求頭或 cookie 中以驗證其請求。

有關 JWT 的更多信息,可參考 JWT 查看更多信息。

屬性
key: 不同的 consumer 對象應有不同的值,它應當是唯一的。不同 consumer 使用了相同的 key ,將會出現請求匹配異常。
secret: 可選字段,加密秘鑰。如果您未指定,后台將會自動幫您生成。
algorithm:可選字段,加密算法。目前支持 HS256, HS384, HS512, RS256 和 ES256,如果未指定,則默認使用 HS256。
exp: 可選字段,token 的超時時間,以秒為單位的計時。比如有效期是 5 分鍾,那么就應設置為 5 * 60 = 300。

 

curl http://127.0.0.1:9080/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"username": "jack",
"plugins": {
"jwt-auth": {
"key": "user-key",
"secret": "my-secret-key"
}
}
}'


首先進行登錄獲取 jwt-auth token:

$ curl http://127.0.0.1:9080/apisix/plugin/jwt/sign?key=user-key -i
HTTP/1.1 200 OK
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1c2VyLWtleSIsImV4cCI6MTU2NDA1MDgxMX0.Us8zh_4VjJXF-TmR5f8cif8mBU7SuefPlpxhH0jbPVI


使用獲取到的 token 進行請求嘗試

token 放到請求頭中:
$ curl http://127.0.0.1:9080/index.html -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1c2VyLWtleSIsImV4cCI6MTU2NDA1MDgxMX0.Us8zh_4VjJXF-TmR5f8cif8mBU7SuefPlpxhH0jbPVI' -i
HTTP/1.1 200 OK


token 放到請求參數中:
$ curl http://127.0.0.1:9080/index.html?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1c2VyLWtleSIsImV4cCI6MTU2NDA1MDgxMX0.Us8zh_4VjJXF-TmR5f8cif8mBU7SuefPlpxhH0jbPVI -i
HTTP/1.1 200 OK


token 放到 cookie 中:
$ curl http://127.0.0.1:9080/index.html --cookie jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1c2VyLWtleSIsImV4cCI6MTU2NDA1MDgxMX0.Us8zh_4VjJXF-TmR5f8cif8mBU7SuefPlpxhH0jbPVI -i
HTTP/1.1 200 OK

 

 

三、basic-auth 是一個認證插件,它需要與 consumer 一起配合才能工作。

添加 Basic Authentication 到一個 service 或 route。 然后 consumer 將其用戶名和密碼添加到請求頭中以驗證其請求。


curl http://127.0.0.1:9080/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"username": "foo",
"plugins": {
"basic-auth": {
"username": "foo",
"password": "bar"
}
}
}'

 


四、wolf-rbac 是一個認證及授權(rbac)插件,它需要與 consumer 一起配合才能工作。同時需要添加 wolf-rbac 到一個 service 或 route 中。 rbac功能由wolf提供, 有關 wolf 的更多信息, 請參考wolf文檔。


屬性
server: 設置 wolf-server 的訪問地址, 如果未設置, 默認為: http://127.0.0.1:10080.
appid: 設置應用id, 該應用id, 需要是在 wolf-console 中已經添加的應用id.

 

curl http://127.0.0.1:9080/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"username":"wolf_rbac",
"plugins":{
"wolf-rbac":{
"server":"http://127.0.0.1:10080",
"appid":"restful"
}
},
"desc":"wolf-rbac"
}'

 

首先進行登錄獲取 wolf-rbac token:
下面的 appid, username, password 必須為wolf系統中真實存在的.


curl http://127.0.0.1:9080/apisix/plugin/wolf-rbac/login -i \
-H "Content-Type: application/json" \
-d '{"appid": "restful", "username":"test", "password":"user-password"}'

{"rbac_token":"V1#restful#eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NzQ5LCJ1c2VybmFtZSI6InRlc3QiLCJtYW5hZ2VyIjoiIiwiYXBwaWQiOiJyZXN0ZnVsIiwiaWF0IjoxNTc5NDQ5ODQxLCJleHAiOjE1ODAwNTQ2NDF9.n2-830zbhrEh6OAxn4K_yYtg5pqfmjpZAjoQXgtcuts","user_info":{"nickname":"test","username":"test","id":"749"}}


使用獲取到的 token 進行請求嘗試


token 放到請求頭(Authorization)中:
curl http://127.0.0.1:9080/ -H"Host: www.baidu.com" \
-H 'Authorization: V1#restful#eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NzQ5LCJ1c2VybmFtZSI6InRlc3QiLCJtYW5hZ2VyIjoiIiwiYXBwaWQiOiJyZXN0ZnVsIiwiaWF0IjoxNTc5NDQ5ODQxLCJleHAiOjE1ODAwNTQ2NDF9.n2-830zbhrEh6OAxn4K_yYtg5pqfmjpZAjoQXgtcuts' -i

HTTP/1.1 200 OK


token 放到請求參數中:
curl 'http://127.0.0.1:9080?rbac_token=V1%23restful%23eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NzQ5LCJ1c2VybmFtZSI6InRlc3QiLCJtYW5hZ2VyIjoiIiwiYXBwaWQiOiJyZXN0ZnVsIiwiaWF0IjoxNTc5NDQ5ODQxLCJleHAiOjE1ODAwNTQ2NDF9.n2-830zbhrEh6OAxn4K_yYtg5pqfmjpZAjoQXgtcuts' -H"Host: www.baidu.com" -i

HTTP/1.1 200 OK

 

token 放到 cookie 中:
curl http://127.0.0.1:9080 -H"Host: www.baidu.com" \
--cookie x-rbac-token=V1#restful#eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NzQ5LCJ1c2VybmFtZSI6InRlc3QiLCJtYW5hZ2VyIjoiIiwiYXBwaWQiOiJyZXN0ZnVsIiwiaWF0IjoxNTc5NDQ5ODQxLCJleHAiOjE1ODAwNTQ2NDF9.n2-830zbhrEh6OAxn4K_yYtg5pqfmjpZAjoQXgtcuts -i

HTTP/1.1 200 OK


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM