在本主题中,您将了解API网关身份验证,设置密钥身份验证插件以及添加使用者。
如果您根据入门指南学习,请确保已完成“Kong入门指南 - 通过代理缓存提高性能 ”。
API网关身份验证是控制允许使用您的API传输的数据的重要方法。基本上,它使用一组预定义的凭据来检查特定使用者是否有权访问API。
Kong Gateway有一个插件库,这些插件提供了实现API网关身份验证的最广为人知和使用最广泛的方法的简单方法。以下是一些常用的:
身份验证插件可以配置为应用于Kong Gateway内的服务实体。反过来,服务实体与它们表示的上游服务是一对一映射的,从本质上讲意味着认证插件直接应用于那些上游服务。
启用身份验证后,除非客户端首先成功进行身份验证,否则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
$ curl -i http://<admin-hostname>:8000/mock
由于添加了密钥认证,因此您将无法访问它:
HTTP/1.1 401 Unauthorized ... { "message": "No API key found in request" }
在Kong代理请求此路由之前,它需要一个API密钥。对于此示例,由于安装了密钥身份验证插件,因此需要首先创建具有关联密钥的使用者。
使用cURL:
$ curl -i -X POST -d "username=consumer&custom_id=consumer" http://<admin-hostname>:8001/consumers/
使用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密钥。如果您不想一直指定密钥,请在继续操作之前禁用插件。
使用cURL:
$ curl -X GET http://<admin-hostname>:8001/routes/mocking/plugins/
输出:
"id": "2512e48d9-7by0-674c-84b7-00606792f96b"
$ curl -X PATCH http://<admin-hostname>:8001/routes/mocking/plugins/{<plugin-id>} --data "enabled=false"
来源:https://www.icode9.com/content-4-703751.html
联系客服