• 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

  • 相关阅读:
    【模板】2-SAT 问题
    HDU5875 Function
    Codeforces Round #380 (Div. 2)/729B Spotlights 水题
    Codeforces Round #380 (Div. 2)/729E Subordinates 贪心
    Codeforces Round #380 (Div. 2)/729D Sea Battle 思维题
    HDU 5869 Different GCD Subarray Query 树状数组+离线
    HDU 5696 区间的价值 暴力DFS
    HDU 5876 Sparse Graph BFS+set删点
    HDU 5868 Different Circle Permutation Burnside引理+矩阵快速幂+逆元
    HDU 5800 To My Girlfriend DP
  • 原文地址:https://www.cnblogs.com/wueryuan/p/14930991.html
Copyright © 2020-2023  润新知