言简意赅的讲解 Konga 可视化配置 Kong Key-Auth解决的痛点
在现代微服务架构中,API 网关常常用于集中管理 API 的认证和授权。Kong 是一款非常流行的 API 网关,它提供了丰富的插件支持,而 Key Authentication(Key-Auth)插件是一种常见的认证方式。通过该插件,用户可以通过 API Key 来验证 API 请求的合法性。之前给大家讲解过Kong和可视化页面Konga,今天来说说如何非常简单的就能实现API网关的API Key 认证
Konga 是一个可视化的管理界面,它使得对 Kong API 网关的配置更加直观和便捷。在本文中,我们将通过 Konga 可视化界面,展示如何配置 Kong 的 Key-Auth 插件,并实现针对 API Key 的认证。
1. Key-Auth 插件简介
Key-Auth 插件使得 API 服务能够基于 API Key 来进行认证。每个请求需要在请求头中提供一个有效的 API Key,Kong 将会验证这个 Key 是否有效。通常,API Key 会与某个用户或者客户端相关联。
优点:
- 简单易用,广泛应用于许多 API 服务中。
- 对于公用 API 或轻量级的认证场景,Key-Auth 插件非常适合。
- 它通过 API Key 来限制访问,确保只有持有有效 Key 的用户能够访问接口。
缺点:
- API Key 如果泄露,可能导致安全风险。
- 需要管理大量的 API Keys,并确保它们的有效性。
2. 使用 Konga 配置 Key-Auth 插件
在 Konga 中,我们可以通过直观的界面来配置 Kong 的插件。下面是配置的具体步骤。
步骤 1:登录 Konga 界面
首先,打开 Konga 管理后台,进入你的 Kong 集群管理界面。假设你已经正确配置了 Konga 和 Kong 的连接。
步骤 2:选择一个服务或路由
Kong 中的插件是与服务(Service)或路由(Route)绑定的,因此首先需要选择你要配置 Key-Auth 插件的服务或路由。
- 在 Konga 首页,点击左侧导航栏中的“Services”。
- 找到你要配置插件的服务,点击服务名称进入该服务的详情页。
如果你希望针对特定路由进行配置,也可以选择“Routes”选项并选择对应的路由。
步骤 3:添加 Key-Auth 插件
- 在服务或路由的详情页中,点击页面右上角的“Plugins”标签。
- 在插件列表页,点击右上角的“Add Plugin”按钮。
步骤 4:配置 Key-Auth 插件
在插件配置页面,选择插件类型为“Key Authentication”。此时,你会看到多个可配置的选项。
常用项:
- Config:
key_names
:这个字段指定了 API Key 需要通过哪个头部字段传递。通常情况下,我们使用apikey
或Authorization
作为头部名称。hide_credentials
:如果设置为true
,Kong 会自动隐藏响应中的 API Key 信息,避免泄露。
可选项:
- Config:
key_in_body
:设置为true
时,API Key 会在请求体中传递,而不是在请求头中。key_in_query
:设置为true
时,API Key 会作为查询参数传递。
在 Konga 中,你只需要根据需求填写这些字段即可,通常,key_names
和 hide_credentials
是最常用的配置项。
例如,假设我们希望 API Key 通过请求头的 apikey
字段传递,并且不返回给客户端,我们的配置如下:
key_names
:apikey
hide_credentials
:true
点击页面底部的“Save”按钮保存配置。
步骤 5:创建和管理 API Keys
Key-Auth 插件依赖于有效的 API Key,因此你需要为不同的客户端生成和管理 API Key。可以通过 Konga 或直接在 Kong 的数据库中创建 API Key。
在 Konga 中创建 API Key 的步骤如下:
- 在 Konga 左侧导航栏中,点击“Consumers”。
- 选择或创建一个 Consumer(消费者)。消费者通常代表一个使用你 API 的用户或者应用。
- 在 Consumer 的详情页中,点击“Credentials”标签,然后选择“API Key”。
- 在弹出的表单中,为该消费者创建一个 API Key。
每个消费者都可以有多个 API Key,Kong 会根据请求中的 API Key 来识别请求的消费者。
步骤 6:验证配置
配置完成后,你可以通过一个简单的 HTTP 请求来验证 API Key 配置是否生效。确保你在请求中添加了正确的 API Key。
例如,假设你配置的 API Key 在请求头中使用了 apikey
字段,你可以使用 curl
命令进行测试:
curl -X GET http://your-kong-instance/api/your-service-endpoint -H "apikey: your-api-key"
如果 API Key 有效,你将收到 API 响应。如果 API Key 无效或缺失,Kong 将返回 401 Unauthorized 错误。
3. 样例展示
假设我们有一个简单的 API 服务,API 路由为 /api/v1/resource
。我们希望为这个路由启用 Key-Auth 插件,并通过 apikey
头部进行身份验证。
服务和路由配置:
- 服务名称:
my-service
- 路由路径:
/api/v1/resource
插件配置:
key_names
:apikey
hide_credentials
:true
创建 Consumer 和 API Key:
- 创建一个名为
my-consumer
的 Consumer,并为其生成 API Key。
请求验证:
通过以下命令验证配置:
curl -X GET http://localhost:8000/api/v1/resource -H "apikey: your-api-key"
如果 your-api-key
是有效的,返回 200 状态码和 API 响应。如果无效,返回 401 错误。
4. 总结
通过 Konga 可视化界面配置 Kong 的 Key-Auth 插件,能够帮助我们快速为 API 实现基于 API Key 的认证。与传统的命令行方式相比,Konga 提供了一个直观的界面,使得配置过程更加简单和高效。Key-Auth 插件在保障 API 安全性、限制不合规请求方面非常有效,但也需要注意管理 API Key 的安全性,以避免泄露带来的安全风险。
在实际应用中,您可以根据不同的需求对 Key-Auth 插件进行细粒度的配置,甚至结合其他插件共同实现更加全面的 API 管理方案。
通过上述内容,你就已经基本理解了这个方法,基础用法我也都有展示。如果你能融会贯通,我相信你会很强
Best
Wenhao (楠博万)