关于 Kong API Gateway 的一些疑问

发布于 2022-09-05 15:48:46 字数 588 浏览 31 评论 0

最近开始学习 Kong——一个基于 OpenResty(Nginx 和 LuaJIT 的高度结合品) 实现的 API Gateway,里面的一些设计理念无法理解,请知道的大神指点一下,先谢过了!

问题如下:

  1. Kong 的插件里有 JWT 认证插件,需要创建 Consumer,为什么不直接验证现有的数据库中的用户
  2. 如果这个认证不是针对最终用户的,那么他的意义是什么?限制非自有服务或 APP 对 API 的访问吗?

如果这个认证插件是面向终端的,那么问题又来了,比如前端调用 API 这个 Key 肯定会暴露,那么别人就可以用这个 Key 来访问 后端 API 了!

我按照我自己的思路绘制了一个大致的流程图:

图片描述

不知道 Kong 是不是这样用的,最终的认证还是需要单独拎出来做个服务

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半城柳色半声笛 2022-09-12 15:48:46

小白一个,这里简单谈谈我的见解。
https://getkong.org/plugins/j...
上面的是官方的jwt插件的说明文档,我根据这个文档来说说想法。
首先,consumer并不是用户,不是说一个用户就要对应一个consumer,具体是什么,我其实也是不太清楚,总之在使用插件时需要用到就是了。
在使用插件前先创建一个consumer,这个就不用多说了。接下来应该为这个consumer创建一个凭据,这个的参数里面你就可以指定secret,当然也可以插件自己生成。在创建凭据之后会返回信息,里面就包含几个重要的内容,key和secret,在之后将会用到。
在拿到之后,你就可以创建自己的jwt了,当然,payload必须包含key,具体是这样的,'iss':{key},其他的信息你自己加,这里的key就是上面返回的key,而加密所需要的secret就是上面返回的secret,至此,你的jwt创建成功,而这个jwt同样可以在kong中进行验证。
所以构建jwt的全过程都是你自己控制的,包括secret等等,而其实那些个key和consumer什么的,我也不是很懂,我也是初学者而已。
以上内容均理解官方文档得来,并无实际验证,只是给了一个思路而已,所以正确性未知,建议多看一下文档,并且自己实现一下,去看看是否真的是这样用的。

明天过后 2022-09-12 15:48:46

个人理解,可以面向用户,也可以面向其它服务,只不过要考虑是否合适。譬如说如果面向用户,那么在创建用户的时候,就把用户名和密码直接写到kong中,kong集中存放了用户的密码,技术上来说是可以的,这样实现是否合适,就是另一个话题了。

其实关键的是插件,kong中的插件,是可以关联到Consumer的,那么怎么判断当前请求的Consumer是谁呢?通过jwt/key-auth等可以关联到。简单说就是,一个这个请求中带的key是老王,那么就调用关联到老王的插件对这个请求进行处理。

最近在折腾kong,记了了一些笔记,关于插件的:先了解下插件的作用范围和设置方法。其它的笔记在这里,边学边记中 API网关Kong系列笔记

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文