• Kong网关身份认证


    认证的步骤:

    1. 启用认证插件。
    2. 创建用户。
    3. 给用户分配认证信息(扩展:账号密码 等)。
    4. 请求时,带上认证信息。

    key-auth:

    创建用户:

    1. [root@localhost etc]# curl -i -X POST http://localhost:8001/consumers --data username=user1
    2. HTTP/1.1 201 Created
    3. Date: Fri, 02 Dec 2022 08:18:01 GMT
    4. Content-Type: application/json; charset=utf-8
    5. Connection: keep-alive
    6. Access-Control-Allow-Origin: *
    7. Content-Length: 117
    8. X-Kong-Admin-Latency: 24
    9. Server: kong/3.0.1
    10. {"custom_id":null,"tags":null,"id":"e04b610e-4bde-4eaf-88d7-ae8a874e668e","created_at":1669969081,"username":"user1"}[root@localhost etc]#
    1. 给user1 设置需要校验的key值。
    2. 193 curl -i -X POST http://localhost:8001/consumers/user1/key-auth --data key=top-secret-key
    3. 校验key值的参数:apikey。(启用插件)
    4. 194 curl -i -X POST http://localhost:8001/plugins --data name=key-auth --data "config.key_names=apikey"
    5. 不带key
    6. 195 curl -i http://localhost:8000/tomcat82
    7. 带错误的key
    8. 196 curl -i http://localhost:8000/tomcat82 -H "apikey:asdasd"
    9. 带正确的key
    10. 197 curl -i http://localhost:8000/tomcat82 -H "apikey:top-secret-key"

    basic-auth:

    创建用户:

    curl -i -X POST http://localhost:8001/consumers --data username=user2
    

    启用basic-auth的插件:注意不能直接全局开启,需要在services上或者 routes上开启。

    curl -i -X POST http://localhost:8001/services/myTomcat/plugins --data name=basic-auth --data "config.hide_credentials=true"
    

    给用户创建凭证

    curl -X POST http://localhost:8001/consumers/user2/basic-auth --data "username=user2" --data "password=123456"
    

    请求的时候,带上 凭证,前提需要做base64的转换。

    "user2:123456" 转换成 base64:dXNlcjI6MTIzNDU2

    1. 不带凭证:
    2. [root@localhost etc]# curl http://localhost:8000/tomcat82
    3. {
    4. "message":"Unauthorized"
    5. }[root@localhost etc]#
    1. 正确的凭证:
    2. curl http://localhost:8000/tomcat82 --header "Authorization: Basic dXNlcjI6MTIzNDU2"
    3. tomcat-8082,82,82
    4. 错误的凭证:
    5. [root@localhost etc]# curl http://localhost:8000/tomcat82 --header "Authorization: Basic dXNlcjI6MTIzNDU21"
    6. {
    7. "message":"Invalid authentication credentials"
    8. }[root@localhost etc]#

    jwt

    删除插件:(注意:最后是 插件的ID,不是名称)

    1. [root@localhost etc]# curl -X DELETE http://localhost:8001/services/myTomcat/plugins/2fe25deb-22a8-484a-aa1a-22bbd778e339
    2. [root@localhost etc]#

    删除用户:

    [root@localhost etc]# curl -X DELETE http://localhost:8001/consumers/userJwt
    
    • 启用认证插件。

      1. [root@localhost etc]# curl -X POST http://localhost:8001/services/myTomcat/plugins --data name=jwt
      2. {"id":"d4c3714a-114b-4f5e-b8ac-ebcd5c44f531","created_at":1670138890,"service":{"id":"02c6b845-a25b-46d9-9fd0-704feeab3a63"},"route":null,"consumer":null,"tags":null,"enabled":true,"protocols":["grpc","grpcs","http","https"],"name":"jwt","config":{"cookie_names":[],"header_names":["authorization"],"key_claim_name":"iss","claims_to_verify":null,"maximum_expiration":0,"run_on_preflight":true,"anonymous":null,"uri_param_names":["jwt"],"secret_is_base64":false}}[root@localhost etc]#
    • 创建用户。

      1. [root@localhost etc]# curl -X POST http://localhost:8001/consumers --data username=useJwt
      2. {"custom_id":null,"tags":null,"id":"6d52c09c-185b-432f-bc61-f8acd7cb2d98","created_at":1670138991,"username":"useJwt"}[root@localhost etc]#
      3. [root@localhost etc]#
    • 给用户分配认证信息(扩展:账号密码 等)。

      1. [root@localhost etc]# curl -X POST http://localhost:8001/consumers/useJwt/jwt
      2. {"id":"7026a984-454e-4f19-a9d3-25ecd2616168","algorithm":"HS256","consumer":{"id":"6d52c09c-185b-432f-bc61-f8acd7cb2d98"},"tags":null,"secret":"82shAj6BMPHoIcHgUbzQnc0tp6dp9bQh","created_at":1670139121,"rsa_public_key":null,"key":"BvWi05tgEijty9ItznMZ696XitLvgG4U"}[root@localhost etc]#
    • 请求时,带上认证信息。

      生成认证信息:网址:https://jwt.io/#debugger-io

    image.png

    生成的token:

    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJCdldpMDV0Z0VpanR5OUl0em5NWjY5NlhpdEx2Z0c0VSJ9.le5-_RtQq95RigII1nUf-fbL9wsCyxSc1R8FqV21Ju4
    

    请求:

    1. [root@localhost etc]# curl -X GET http://localhost:8000/tomcat82 -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJCdldpMDV0Z0VpanR5OUl0em5NWjY5NlhpdEx2Z0c0VSJ9.le5-_RtQq95RigII1nUf-fbL9wsCyxSc1R8FqV21Ju4'
    2. tomcat-8082,82,82
    3. [root@localhost etc]#

    jwt组成:

    HEADER:base64(json ). base64(payload). 下面的代码块。

    1. HMACSHA256(
    2. base64UrlEncode(header) + "." +
    3. base64UrlEncode(payload),
    4. 82shAj6BMPHoIcHgUbzQnc0tp6dp9bQh
    5. )
  • 相关阅读:
    《算法导论》18.2 B树上的基本操作(搜索、创建、插入)(包含C++代码)
    Docker 讲解与基本操作
    JMeter笔记9 | JMeter参数化
    如何利用 Selenium 对已打开的浏览器进行爬虫
    idea:JavaWeb(maven)Servlet 03
    <C++>初识STL —— 标准模板库
    OpenCV 4.10 发布
    根文件系统制作并启动 Linux
    docker 配置mongoDB
    C++_linux下_非阻塞键盘控制_程序暂停和继续
  • 原文地址:https://blog.csdn.net/mrcool2012/article/details/139308078