Kong(v1.0.2)认证

介绍

上游服务(api或微服务)的流量通常由各种Kong的authentication plugins的应用程序和配置控制。由于Kong的服务实体表示您自己的上游服务的一对一映射,所以最简单的场景是在您选择的服务上配置身份验证插件。

通用认证

最常见的场景是需要身份验证,不允许对任何未经身份验证的请求进行访问。要实现这一点,可以使用任何身份验证插件。这些插件的一般方案/流程如下:

  1. 将身份验证插件应用于服务,或全局(您不能将其应用于使用者)
  2. 创建consumer实体
  3. 为consumer提供特定身份验证方法的身份验证凭据
  4. 现在,每当请求进入Kong时,它将检查提供的凭证(取决于身份验证类型),如果无法验证,它将阻塞请求,或者在header中添加使用者和凭证详细信息并转发请求

上面的通用流并不总是适用的,例如在使用LDAP之类的外部身份验证时,就没有要标识的使用者,并且只在转发的头中添加凭证。

在每个插件的文档plugin’s documentation中都可以找到特定于身份验证方法的元素和示例。

消费者

对于consumer最简单的方法是将他们一对一地映射到用户。然而,这对KOng来说并不重要。对于使用者来说,核心原则是可以将插件附加到它们上,从而定制请求行为。你可能有移动应用,为每个应用定义一个消费者,或它的版本。或者每个平台都有一个消费者,例如android消费者、iOS消费者等等。

对于Kong来说,这是一个不透明的概念,因此他们被称为“consumers”,而不是“users”。

匿名访问

Kong能够配置给定的服务,以允许身份验证和匿名访问。您可以使用此配置将访问权限授予具有较低速率限制的匿名用户,并将访问权限授予具有较高速率限制的经过身份验证的用户。

要配置这样的服务,首先应用所选的身份验证插件,然后创建一个新的使用者来表示匿名用户,然后配置身份验证插件以允许匿名访问。下面是一个示例,它假设您已经配置了一个名为example- Service的服务和相应的路由:

1、创建示例服务和路由

发出以下cURL请求,创建example-service指向mockbin.org,该服务将响应该请求:

 $ curl -i -X POST    --url http://localhost:8001/services/    --data ‘name=example-service‘    --data ‘url=http://mockbin.org/request‘

Add a route to the Service:

 $ curl -i -X POST    --url http://localhost:8001/services/example-service/routes    --data ‘paths[]=/auth-sample‘

The url http://localhost:8000/auth-sample will now echo whatever is being requested.

2、为您的服务配置key-auth插件

发出以下cURL请求,将插件添加到服务中:

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

请务必注意创建的插件id——在步骤5中需要它。

3、验证key-auth插件配置正确

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

 $ curl -i -X GET    --url http://localhost:8000/auth-sample

由于您没有指定所需的apikey头文件或参数,并且您还没有启用匿名访问,因此响应应该是403禁止的:

 HTTP/1.1 403 Forbidden
 ...

 {
   "message": "No API key found in headers or querystring"
 }

4、创建匿名consumer

Kong代理的每个请求都必须与一个consumer相关联。现在,通过发出以下请求,您将创建一个名为anonymous_users的使用者(Kong将在代理匿名访问时使用该使用者):

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

You should see a response similar to the one below:

 HTTP/1.1 201 Created
 Content-Type: application/json
 Connection: keep-alive

 {
   "username": "anonymous_users",
   "created_at": 1428555626000,
   "id": "bbdf1c48-19dc-4ab7-cae0-ff4f59d87dc9"
 }

请务必注意consumer id——您将在下一个步骤中需要它。

5、允许匿名访问

您现在将重新配置key-auth插件,通过发出以下请求来允许匿名访问(将下面的示例uuid替换为步骤2和步骤4中的id值):

 $ curl -i -X PATCH    --url http://localhost:8001/plugins/<your-plugin-id>    --data "config.anonymous=<your-consumer-id>"

配置config.anonymous=<your-consumer-id> 参数指示此服务上的key-auth插件允许匿名访问,并将这种访问与我们在上一步中接收到的consumer id关联起来。在这一步中,您需要提供一个有效且预先存在的consumer id——在配置匿名访问时,当前不会检查consumer id的有效性,并且提供一个不存在的consumer id将导致不正确的配置。

6、匿名访问

通过发出以下请求,确认您的服务现在允许匿名访问:

 $ curl -i -X GET    --url http://localhost:8000/auth-sample

这是您在步骤3中发出的相同请求,但是这次请求应该成功,因为您在步骤5中启用了匿名访问。

响应(即Mockbin接收到的请求)应该包含以下元素:

 {
   ...
   "headers": {
     ...
     "x-consumer-id": "713c592c-38b8-4f5b-976f-1bd2b8069494",
     "x-consumer-username": "anonymous_users",
     "x-anonymous-consumer": "true",
     ...
   },
   ...
 }

它显示请求成功,但是是匿名的。

Multiple身份验证

Kong支持针对给定服务的多个身份验证插件,允许不同的客户机使用不同的身份验证方法访问给定的服务或路由。

可以将身份验证插件的行为设置为逻辑与、逻辑或在评估多个身份验证凭据时执行。行为的关键是配置config.anonymous属性。

  • config.anonymous not set

如果未设置此属性(空),则身份验证插件将始终执行身份验证,如果未验证,则返回40x响应。这将在调用多个auth插件时产生一个逻辑插件。

  • config.anonymous set to a valid consumer id

在这种情况下,身份验证插件只会在尚未验证的情况下执行身份验证。当身份验证失败时,它将不返回40x响应,而是将匿名使用者设置为使用者。当多个身份验证插件被调用时,这将导致一个逻辑或+“anonymous access”。

注1:必须为所有auth plugin或全部都不配置anonymous access。如果它们是混合的,则行为是未定义的。

注2:在使用AND方法时,最后执行的插件将设置传递给上游服务的凭证。使用OR方法,最后传递上游服务凭证将是将是第一个成功验证consumer的插件,或者最后一个plugin将是传递上游服务凭证,如果其已配置的anonymous consumer.。

注3:当以一种AND的方式同时使用OAuth2插件时,用于请求令牌的OAuth2端点等也需要通过其他配置的auth插件进行身份验证。

如果在给定的服务上以某种方式启用多个身份验证插件,并且希望禁止匿名访问,那么应该在匿名使用者上配置请求终止插件。不这样做将允许未经授权的请求。

 

原文地址:https://www.cnblogs.com/duanxz/p/10373591.html

时间: 2024-10-27 04:15:52

Kong(v1.0.2)认证的相关文章

PC蹭网神器:WiFi万能钥匙 V1.0.2.8

产品介绍·WiFi安全·产品动态·WiFi新闻·论坛热帖 WiFi万能钥匙PC简介: WiFi万能钥匙PC是一款自动连接用户共享的免费WiFi热点软件,是无线路由器流量分享.连接管理必备利器,非密码破解工具. 1.WiFi万能钥匙电脑版的热点信息基于云端数据处理技术,内置千万用户分享的WiFi热点. 2.WiFi万能钥匙软件是通过PC无线网卡,自动获取连接WiFi热点,无需密码输入即可直接连接,是免费上网的windows装机必备工具. 3.WiFi热点安全体系,最大化使用各种联网的移动服务,节约

平安科技智能投顾接口设计说明书_陆基金 v1.0.5

平安科技 智能投顾项目 RBPAA接口设计说明书(for 陆基金) 第1.0.4版 平安科技(深圳)有限公司创新品牌体验团队智能投顾组 二○一七年十月 版本控制信息 版本 日期 拟稿和修改 作者 说明1.0 2018-4-25 初稿 陈培镇 ?目录1 概述 12 接口约定 13 接口列表 14 接口组成 15 接口描述 25.1 基金领域 25.1.1 基金盘中实时估值接口(F100) 25.1.2 基金最新估值查询接口(F101) 35.1.3 基金基础信息查询接口(F102) 35.1.4

安卓开发开发规范手册V1.0

安卓开发开发规范手册V1.0 之前发布过一份Web安全开发规范手册V1.0,看到收藏文章的读者挺多,发现整理这些文档还挺有意义. 最近周末抽了些时间把之前收集关于安卓安全开发的资料也整理了一下,整理出一份安卓安全开发手册,大部分内容都是在一些博客看到各位师傅的分享. 一.manifest文件安全 1.1 禁止PermissionGroup的属性为空 PermissionGroup可以对permission进行一个逻辑上的分组.如果PermissionGroup的属性为空,会导致权限定义无效,且其

【资源共享】Rockchip I2C 开发指南 V1.0

2C设备的设备应用非常广泛,常见的包含重力传感器,触摸屏驱动芯片,音频解码等 这个文档是RK3399的I2C开发文档:<Rockchip I2C 开发指南 V1.0> 内容预览: 下载地址:http://developer.t-firefly.com/thread-12495-1-1.html

Windows环境下Android Studio v1.0安装教程

Windows环境下Android Studio v1.0安装教程 Windows环境下Android Studio v1.0安装教程 准备工具 JDK安装包. 要求:JDK 7以及以上版本. Android Studio安装文件. Windows: exe(包含SDK) (813 MB) exe(不包含SDK) (250 MB) zip (235 MB) Mac dmg (234 MB) zip (233 MB) Linux: zip (233 MB) 说明: 32位系统和64位系统是同一个安

Alien.Skin.Bokeh.v1.0.3.Incl.

Ablume.Surfmemo.v4.2.Regged-WaLMaRT\ Alien.Skin.Blow.Up.v2.0.3.MacOSX.Incl.  Alien.Skin.Blow.Up.v2.0.4.Incl. TEL:15108931101   QQ:316859986 Alien.Skin.Exposure.v3.0.0.Incl.  Alien.Skin.Exposure.v3.0.0.MacOSX.Incl.  Alien.Skin.Eye.Candy.v6.0.0a.Incl. 

wzplayer for ios 针对(mms)优化版本V1.0

wzplayer for ios针对mms优化版本发布. 1.支持mms,http,rtmp,rtsp等协议 2.支持全格式 下载地址:http://www.coolradio.cn/WzPlayer.ipa 更强大的,请使用tlplayerhttp://blog.csdn.net/tigerleap/article/details/19007057 联系方式:[email protected] QQ:514540005 版权所有,禁止转载. 发布自:http://blog.csdn.net/t

Nat.Geo.Games.DogTown.v1.0.Cracked-F4C

Macaraja.Soft.RamWizard.v3.1.2.2.Cracked-QUANTiZE\ MetaProducts.LightPad.v4.6.164.WinAll.Incl.Keygen-CRD\ MetaProducts.Portable.Offline.Browser.v5.8.3158.Incl.Keymaker.And.Patch-ROGUE\ Millionenjagd.GERMAN-ALiAS\ Mishap.An.Accidental.Haunting-OUTLAWS

主流区块链技术特点及Fabric V0.6&V1.0版本特点

声明:文章内容来源于网络. 一.主流区块链技术特点 二.Hyperledger的fabric V0.6总体架构: 对应的0.6版本的运行时架构: 0.6版本的架构特点是: 结构简单: 应用-成员管理-Peer的三角形关系,主要业务功能全部集中于Peer节点:    架构问题:由于peer节点承担了太多的功能,所以带来扩展性.可维护性.安全性.业务隔离等方面的诸多问题,所以0.6版本在推出后,并没有大规模被行业使用,只是在一些零星的案例中进行业务验证: 三.Hyperledger的fabric V

heatmap.js v1.0 到 v2.0,详细总结一下:)

前段时间,项目要开发热力图插件,研究了heatmap.js,打算好好总结一下. 本文主要有以下几部分内容: 部分源码理解 如何迁移到v2.0 v2.0官方文档译文 关于heatmap.js介绍,请看这里: http://www.oschina.net/p/heatmap-js 目前,对于热力图的开发,百度.高德开发平台上使用的都是这款JS开源库.当然,现在还有我们公司:P 百度示例:http://developer.baidu.com/map/jsdemo.htm#c1_15 高德示例:http