• [Kong] key-auth实现对API请求的密钥认证



    [前言]

    下面我们将配置key-auth插件以向服务添加身份验证。
    key-auth为Service设置key,只有带有正确的key才能访问Kong API

    • 添加此插件之前, 对服务的所有请求都将在上游代理。
    • 添加和配置此插件后,只有具有正确密钥的请求才会被代理,其他未经认证的请求将被Kong拒绝,从而保护您的上游服务免遭未经授权的使用。

    1. 配置密钥验证插件

    要为您在Kong中配置的service配置key-auth插件,请发出以下CURL请求:

    $ curl -i -X POST 
      --url http://localhost:8001/services/example-service/plugins/ 
      --data 'name=key-auth'
    

    注意:此插件还接受一个config.key_names参数,默认为['apikey']。它是应该在请求期间包含apikey的标头和参数名称(均受支持)的列表。

    2. 确认插件配置正确

    发出以下cURL请求,以验证是否 在服务上正确配置了key-auth插件:

    $ curl -i -X GET 
      --url http://localhost:8000/ 
      --header 'Host: example.com'
    

    由于您未指定所需的apikey标头或参数,因此响应应为401 Unauthorized:

    HTTP/1.1 401 Unauthorized
    ...
    
    {
      "message": "No API key found in request"
    }
    

    由上我们已经成功配置了key-auth 插件,我们还需要将消费者cunsumer添加到服务中,以便继续通过Kong代理请求。

    如果对Cunsumer的概念不清楚,请参考官网 consumer-object

    3. 创建cunsumer

    让我们创建一个Jason通过发出以下请求命名的用户:

    $ curl -i -X POST 
      --url http://localhost:8001/consumers/ 
      --data "username=Jason" 
      --data "custom_id=Jason"
    

    注意custom_id在创建使用者以将使用者与现有用户数据库相关联时,Kong还接受参数。

    4. 给cunsumer提供关键凭证

    现在,我们可以Jason通过发出以下请求为最近创建的使用者创建密钥:

    $ curl -i -X POST 
      --url http://localhost:8001/consumers/Jason/key-auth/ 
      --data 'key=123456'
    

    5. 验证

    现在,我们可以发出以下请求来验证我们的Jason消费者凭证是否有效:

    $ curl -i -X GET 
      --url http://localhost:8000 
      --header "Host: example.com" 
      --header "apikey: 123456"
    

    浏览器

    • 不发送consumer认证密钥,401 Unauthorized

    • 发送consumer认证密钥

    6. 小结

    • 插件不仅能作用于 service,也可以作用于route
    • 插件默认作用于all comsumers,并根据需求确定是否设置访问凭证

     
    [sleepy↓]

     

  • 相关阅读:
    [Tyvj模拟赛]运
    [NOIP 2011]聪明的质监员
    暑假集训D10总结
    暑假集训D9总结
    [POI2008]枪战Maf
    [Usaco2007 Open]Fliptile 翻格子游戏
    [bzoj1592] Making the Grade
    学生信息管理系统(增删改查)【代码不完整】
    《程序员修炼之道》第五次读后感
    《程序员修炼之道》第四次读后感
  • 原文地址:https://www.cnblogs.com/sunhongleibibi/p/12084868.html
Copyright © 2020-2023  润新知