kong中提供了两种最基本认证方式,即用户密码认证, basic-auth及basic-auth-api,这两种方式非常好理解,使用的场景类似
basic-auth的认证方式是直接验证用户名密码
而basic-auth-api会将提交的用户名密码到指定的api接口认证,比如统一认证服务
basic auth可以为Route或者Service添加简单的用户名密码认证
要使用basic-auth,直接在ingress的annotations中添加plugins.konghq.com: xxx
即可,在2.x的版本中, plugins.konghq.com
已经被抛弃, 变成konghq.com/plugins
使用非常简单:
假设现在要有一个应用需要通过用户名才能访问, 则
创建kongConsumer及KongCredential
1 | apiVersion: configuration.konghq.com/v1 |
2.x的版本KongCredential
正在被淘汰,建议使用credential Secrets
首先是申明了kongConsumer及KongCredential这两个对象,在kong中,
同时,需要申明kongplugin,
1 | apiVersion: configuration.konghq.com/v1 |
之后则添加ingress
1 | apiVersion: v1 |
如果是basic-auth-api的话,则kongplugin为
1 | apiVersion: configuration.konghq.com/v1 |
效果为:
这个界面是不是很熟悉,没错,这个其实就是nginx的认证, kong本身就是基于nginxLUA的封装
如果密码输入错误的话,则会直接提示{"message":"Invalid authentication credentials"}
basic-auth-api的方式可以更好地把统一认证服务集成到应用中,这样避免每个服务都需要加入认证相关的代码.