1、概述
为了提高系统的安全性,引入认证功能是非常迫切和必须的。由于认证是一个通用功能,没有必要每个系统各自实现,造成重复劳动,因此,我们在Kong转发时配置了认证插件。
2、选型
Kong官网提供的关于认证插件很多,有17个之多,我们挑选了其中三个比较适合的插件作出对比:
插件 | 名称 | 功能 | 安全系数 |
---|---|---|---|
key-auth | Key认证 | 在Headers中添加apikey作为认证凭证 | 低 |
basic-auth | Basic认证 | 在Headers中添加Authorization认证信息,其中用户名/密码使用BASE64编码 | 低,适用于机器之间认证 |
hmac-auth | HMAC认证 | 在Headers中添加Authorization认证信息,包括用户名、签名等,可防止请求内容被篡改 | 中,适用于人机认证 |
参考淘宝及中通开放平台的api协议规则,它们也是采用类似HMAC这种带签名的认证方式实现防篡改功能,因而,我们决定采用hmac-auth插件提供认证功能。
3、添加插件
由于我们不能确定日后所有 Service 都必须支持认证功能,所以暂时不能把这个认证插件配置成全局插件。于是,我们的配置插件步骤是:
- 找到指定 Service 并打开它的详细页面,并点击【Plugins】菜单
-
在当前服务的插件页面中,点击【ADD PLUGIN】按钮
-
在弹出的插件列表窗口中,选择 Hmac Auth 插件
- 在弹出的插件配置窗口中,根据需求填写相关项目内容,请注意 enforce headers 和 algorithms 项目在输入内容后需要回车才能有效提交
至此,认证插件已经成功添加到 Service 上。
4、添加消费者和证书
虽然插件已经生效,但没有相关证书是无法有效使用的,所以此时要添加消费者和证书。此处步骤相对简单。
-
添加消费者
-
在当前消费者中添加证书,建议 secret 不填则自动生成
5、参考资料
系列链接