API网关Kong系列(四)认证配置
目前根据业务需要先介绍2种认证插件:Key Authentication 及 HMAC-SHA1 认证
Key Authentication
向API添加密钥身份验证(也称为API密钥)。 然后,消费者可以在 querystring 参数或 Header 头中添加其密钥,以验证其请求。
进入之前部署好的kong-ui,选择plugins,点击+号
按需求输入参数
同样创建一个消费者
其中客户Id为选填
生成后进入消费者列表,编辑该用户,按一下操作生成对应的key。
同时我们可以看到消费者中包含有其他插件所需的属性等,可以按需自己生成。
添加后如下
使用起来也很简单,将key(之前添加插件是设置的key名称)插入header值即可
如果验证错误则返回403

为您的API添加HMAC签名身份验证以建立使用者的身份。 插件将在代理授权和授权Header中检查有效的签名(按此顺序)。 这个插件实现遵循draft-cavage-http-signatures-00草案略有改变的签名方案。
根据如上方法,同理增加HMAC认证凭证
同理加入HMAC插件
HMAC-SHA1,C#代码实现:
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text; namespace Security.Cryptography
{
public static class HMAC_SHA1
{
public static string Sign(string text, string key, string inputCharset = "utf-8")
{
Encoding _encode = Encoding.GetEncoding(inputCharset);
byte[] _byteData = Encoding.GetEncoding(inputCharset).GetBytes(text);
HMACSHA1 _hmac = new HMACSHA1(_encode.GetBytes(key)); using (CryptoStream _cs = new CryptoStream(Stream.Null, _hmac, CryptoStreamMode.Write))
{
_cs.Write(_byteData, , _byteData.Length);
}
return Convert.ToBase64String(_hmac.Hash);
}
}
}
请求的时候主要是header中
Authorization 的构造,根据官方文档
Authorization: hmac username="bob", algorithm="hmac-sha1", headers="date content-md5", signature="Base64(HMAC-SHA1(signing string))"
如果有多个Header的话,header名称用空格隔开,注意官方文档中的"date"如今应该改成"x-date",date的格式请使用GMT时间诸如"Wed, 01 Mar 2017 05:05:24 GMT"
官方文档中加密字符串:
date: Fri, 09 Oct 2015 00:00:00 GMT\ncontent-md5: lCMsW4/JJy9vc6HjbraPzw==
注意也要将date修改成x-date,如果没有content-md5这个头,那就不用加\n,直接为
x-date: Fri, 09 Oct 2015 00:00:00 GMT
这边提供一组正确的加密字串,供大家实现算法后验证
secret:secret7496
加密前字符串:x-date: Wed, 01 Mar 2017 05:05:24 GMT
摘要字符串为:XefFQYm8HRXsocJHF4ibDEPWW3k=
重要备注:
这个HMAC主要碰到2类错误
1.HMAC signature cannot be verified, a valid date or x-date header is required for HMAC Authentication
这个错误主要2种情况都跟日期有关
1)服务器时间跟客户端发出去的x-date的间隔时间超过之前定义的clock skew秒数(通过docker容器安装的容易产生这个问题)
2)请确认是GMT时间格式
3)把date改成x-date
2.HMAC signature does not match
这个就是签名算法有问题了
API网关Kong系列(四)认证配置的更多相关文章
- API网关Kong系列(一)初识
最近工作需要,加上国内Kong的文章相对缺乏(搜来搜去就那么两篇文章),而且官方文档在某些demo上也有一些过时的地方,遂提笔记录下这些,希望能有帮助. 先随大流介绍下KONG(主要参考官网): 官方 ...
- API网关Kong系列(三)添加服务
进入之前部署好的kong-ui,默认第一次登陆需要配置kong服务的地址 进入API菜单,点击+号 按照要求填入相关信息 至此完成,可以使用诸如 https://your.domain.com:208 ...
- API网关Kong系列(二)部署
部署环境: [OS] centos 6.8(如果是centos6.5,请自行先升级到6.8,否则不支持docker) [Docker] Client version: 1.7.1 Client API ...
- API 网关 Kong
什么是 API 网关? 所谓网关,主要作用就是连接两个不同网络的设备,而今天所讲的 API 网关是指承接和分发客户端所有请求的网关层. 为什么需要网关层?最初是单体服务时,客户端发起的所有请求都可以直 ...
- Api网关Kong集成Consul做服务发现及在Asp.Net Core中的使用
写在前面 Api网关我们之前是用 .netcore写的 Ocelot的,使用后并没有完全达到我们的预期,花了些时间了解后觉得kong可能是个更合适的选择. 简单说下kong对比ocelot打动我的 ...
- API网关——Kong实践分享
概述 01 什么是Kong Kong是一个在Nginx中运行的Lua应用程序,可以通过lua-nginx模块实现,Kong不是用这个模块编译Nginx,而是与OpenRestry一起发布,OpenRe ...
- API网关--Kong的实践
1. 什么是Kong 目前互联网后台架构一般是采用微服务,或者类似微服务的形式,应用的请求通常需要访问多个后台系统.如果让每一个后台系统都实现鉴权.限流.负载均衡.审计等基础功能是不合适的,通用的做法 ...
- shiro实战系列(四)之配置
Shiro之配置 Shiro 被设计成能够在任何环境下工作,从最简单的命令行应用程序到最大的的企业群集应用.由于环境的多样性,使得许多配置机制适用于它的配置. 一. 许多配置选项 Shiro的Secu ...
- API网关Kong部署和使用文档
KONG安装使用说明 系统版本:ubuntu14 1.下载安装包 $ wget https://github.com/Mashape/kong/releases/download/0.8.3/kong ...
随机推荐
- opencv-python教程学习系列10-颜色空间转换
前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍颜色空间转换,坚持学习,共同进步. 系列教程参照OpenCV-Python中文教程: 系统环境 系 ...
- 使用Nginx实现灰度发
灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式.AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到 ...
- 利用git向github中推送文件
/*游戏或者运动才能让我短暂的忘记心痛,现如今感觉学习比游戏和运动还重要——曾少锋*/ 如果对git不够熟悉的学者,可以参考:http://www.cnblogs.com/zengsf/p/75062 ...
- led灯的驱动电流和电阻
通常led灯条所采用的LED驱动电流都是20mA, 这网站里有led电阻的详细计算过程:http://www.bao1314.net/792.html
- Shader的函数公式以及使用的场景
Shader 是干什么的? 它的作用可以先简单理解为对屏幕上的物体,进行颜色处理. 而大家都知道,所有计算机,处理颜色的当然是显卡,也就是 GPU . 所以我们写 Shader 的目的就是告诉 GPU ...
- 发布网站的时候发现360极速浏览器ie7内核不兼容样式的问题
引言: 在Web应用的开发过程中,发现若干页面在360的浏览器上显示不正常,而在其他的浏览器上,皆为正常状态,问题出在哪里呢? 问题的提出: Web页面在360的浏览器上,显示不正确. 但是在Fir ...
- 51Nod 1067:Bash游戏 V2(巴什博弈)
1067 Bash游戏 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 有一堆石子共有N个.A B两个人轮流拿,A先拿.每次只能拿1,3,4 ...
- WinHex简介
WinHex是一个专门用来对付各种日常紧急情况的小工具.它可以用来检查和修复各种文件.恢复删除文件.硬盘损坏造成的数据丢失等.同时它还可以让你看到其他程序隐藏起来的文件和数据.得到 ZDNetSoft ...
- Math类的学习 java 类库 API 文档学习
- V4L2驱动内核文档翻译(一)
随着一些视频或者图像硬件的复杂化,V4L2驱动也越来越趋于复杂.许多硬件有多个IC,在/dev下生成多个video设备或者其他的诸如,DVB,ALSA,FB,I2C ,IR等等非V4L2的设备.所以, ...