• Kong入门指南


    下载Kong入门指南

    Kong入门指南

    目录

    1. 总览

    2. 准备管理Kong Gateway

    3. 通过Kong Gateway公开您的服务

    4. 保护您的服务

    5. 通过代理缓存提高性能

    6. 使用身份验证保护服务

    7. 设置智能负载平衡

    在本主题中,您将了解API网关身份验证,设置密钥身份验证插件以及添加使用者。

    如果您根据入门指南学习,请确保已完成“Kong入门指南 - 通过代理缓存提高性能 ”。

    什么是身份验证?

    API网关身份验证是控制允许使用您的API传输的数据的重要方法。基本上,它使用一组预定义的凭据来检查特定使用者是否有权访问API。

    Kong Gateway有一个插件库,这些插件提供了实现API网关身份验证的最广为人知和使用最广泛的方法的简单方法。以下是一些常用的:

    • 基本认证
    • 密钥认证
    • OAuth 2.0身份验证
    • LDAP认证高级
    • OpenID连接

    身份验证插件可以配置为应用于Kong Gateway内的服务实体。反过来,服务实体与它们表示的上游服务是一对一映射的,从本质上讲意味着认证插件直接应用于那些上游服务。

    为什么要使用API​​网关身份验证?

    启用身份验证后,除非客户端首先成功进行身份验证,否则Kong Gateway不会代理请求。这意味着上游(API)不需要对客户端请求进行身份验证,也不会浪费用于验证凭据的关键资源。

    Kong Gateway可以查看所有身份验证尝试(成功,失败等等),从而可以对这些事件进行分类和控制,以证明适当的控制措施已经存在并实现合规性。身份验证还使您有机会确定如何处理失败的请求。这可能意味着仅阻止请求并返回错误代码,或者在某些情况下,您可能仍希望提供有限的访问权限。

    在此示例中,您将启用密钥验证插件。API密钥身份验证是进行API身份验证的最流行的方法之一,可以实现以根据需要创建和删除访问密钥。

    有关更多信息,请参见什么是API网关身份验证?。

    设置密钥认证插件

    1.在端口上调用Admin API 8001并配置插件以启用密钥身份验证。对于此示例,将插件应用于您创建的/ mock路由。

    使用cURL:

    $ curl -X POST http://<admin-hostname>:8001/routes/mocking/plugins 
     --data name=key-auth
    
    1. 尝试再次访问该服务:
      使用cURL:
    $ curl -i http://<admin-hostname>:8000/mock
    

    由于添加了密钥认证,因此您将无法访问它:

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

    在Kong代理请求此路由之前,它需要一个API密钥。对于此示例,由于安装了密钥身份验证插件,因此需要首先创建具有关联密钥的使用者。

    设置使用者和凭证

    1. 要创建使用者,请调用Admin API和使用者的端点。下面创建了一个新的消费者,称为Consumer。

    使用cURL:

     $ curl -i -X POST -d "username=consumer&custom_id=consumer" http://<admin-hostname>:8001/consumers/
    
    1. 设置后,调用Admin API为上面创建的使用者设置密钥。对于此示例,将密钥设置为apikey。如果未输入任何密钥,则Kong将自动生成密钥。

    使用cURL:

    $ curl -i -X POST http://<admin-hostname>:8001/consumers/consumer/key-auth -d 'key=apikey'
    

    结果:

    HTTP/1.1 201 Created
     ...
     {
         "consumer": {
             "id": "2c43c08b-ba6d-444a-8687-3394bb215350"
         },
         "created_at": 1568255693,
         "id": "86d283dd-27ee-473c-9a1d-a567c6a76d8e",
         "key": "apikey"
     }
    

    现在,您已经为使用者提供了API密钥,以访问该路由。

    验证密钥验证

    要验证密钥身份验证插件,请使用密钥值为的标头再次访问模拟路由。apikeyapikey

    使用cURL:

    $ curl -i http://<admin-hostname>:8000/mock/request -H 'apikey:apikey'
    

    您应该得到一条HTTP/1.1 200 OK消息作为回应。

    (可选)禁用插件

    如果您按照主题逐个遵循此入门指南,则在以后的所有请求中都需要使用此API密钥。如果您不想一直指定密钥,请在继续操作之前禁用插件。

    1. 找到插件ID并复制。

    使用cURL:

    $ curl -X GET http://<admin-hostname>:8001/routes/mocking/plugins/
    

    输出:

     "id": "2512e48d9-7by0-674c-84b7-00606792f96b"
    
    1. 禁用插件。
      使用cURL:
     $ curl -X PATCH http://<admin-hostname>:8001/routes/mocking/plugins/{<plugin-id>} 
     --data "enabled=false"
    

    觉得有帮助,欢迎关注作者,点个“推荐”或“留言”,转给朋友们

  • 相关阅读:
    python 中classmethod修饰符、staticmethod和装饰器有什么区别
    zabbix4.0 监控 mysql5.7
    centos7 zabbix 自启动 设定
    生产环境 编译安装 zabbix 服务
    docker 环境 部署 centos7镜像 并配置免秘登陆
    dd 命令 磁盘写性能测试
    hdparm命令 硬盘读取速度压力测试
    zabbix 动态实时日志监控
    已经创建 且运行一段时间的docker容器 添加新的映射端口
    hive 锁表解决方案(unlock不掉的情况下)
  • 原文地址:https://www.cnblogs.com/jerryqm/p/13030564.html
Copyright © 2020-2023  润新知