关于 Kong API Gateway 的一些疑问
最近开始学习 Kong——一个基于 OpenResty(Nginx 和 LuaJIT 的高度结合品) 实现的 API Gateway,里面的一些设计理念无法理解,请知道的大神指点一下,先谢过了!
问题如下:
- Kong 的插件里有 JWT 认证插件,需要创建
Consumer
,为什么不直接验证现有的数据库中的用户
? - 如果这个认证不是针对最终用户的,那么他的意义是什么?限制非自有服务或 APP 对 API 的访问吗?
如果这个认证插件是面向终端的,那么问题又来了,比如前端调用 API 这个 Key 肯定会暴露,那么别人就可以用这个 Key 来访问 后端 API 了!
我按照我自己的思路绘制了一个大致的流程图:
不知道 Kong 是不是这样用的,最终的认证还是需要单独拎出来做个服务
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
小白一个,这里简单谈谈我的见解。
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什么的,我也不是很懂,我也是初学者而已。
以上内容均理解官方文档得来,并无实际验证,只是给了一个思路而已,所以正确性未知,建议多看一下文档,并且自己实现一下,去看看是否真的是这样用的。
个人理解,可以面向用户,也可以面向其它服务,只不过要考虑是否合适。譬如说如果面向用户,那么在创建用户的时候,就把用户名和密码直接写到kong中,kong集中存放了用户的密码,技术上来说是可以的,这样实现是否合适,就是另一个话题了。
其实关键的是插件,kong中的插件,是可以关联到Consumer的,那么怎么判断当前请求的Consumer是谁呢?通过jwt/key-auth等可以关联到。简单说就是,一个这个请求中带的key是老王,那么就调用关联到老王的插件对这个请求进行处理。
最近在折腾kong,记了了一些笔记,关于插件的:先了解下插件的作用范围和设置方法。其它的笔记在这里,边学边记中 API网关Kong系列笔记