欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

kong hmac 应用实践

程序员文章站 2022-05-12 22:24:38
...

kong hmac 应用实践

service 创建

curl -i -X POST --url http://127.0.0.1:8001/services/ --data 'name=lxy-service' --data 'url=http://127.0.0.1:8090/project/'

注:请根据实际情况填写自己服务地址url

route 创建

curl -i -X POST --url http://127.0.0.1:8001/services/lxy-service/routes --data 'paths[]=/test/'

为services 添加 hmac插件

POST  http://127.0.0.1:8001/services/a721cb35-d3e4-41d6-bace-2acf7c688b7c/plugins  
{
	"name":"hmac-auth",
	"config": {
		"enforce_headers": ["testhamc"],
		"algorithms": ["hmac-sha1", "hmac-sha256"]
	}
}

创建consumer

curl -i -X POST  http://127.0.0.1:8001/consumers

为consumer 创建证书

POST  http://127.0.0.1:8001/consumers/5b10f786-1392-49c5-b64f-b74195b481da/hmac-auth
{
	"username":"test",
	"secret":"test123456"
}

以上配置完成,现在看一下怎么用:

先试着访问一下
kong hmac 应用实践
可以看到,提示需要认证,参考官方文档

生成签名

import hashlib
import hmac
import base64

message = "test: 123456"
secret = b"test123456"

signature = base64.b64encode(hmac.new(secret, message.encode("utf8"), digestmod=hashlib.sha256).digest())
print(signature)

添加请求头Authorization,在次访问,提示如下信息
kong hmac 应用实践
根据提示需要添加x-date信息

import datetime
GMT_FORMAT =  '%a, %d %b %Y %H:%M:%S GMT'
time = datetime.datetime.utcnow().strftime(GMT_FORMAT)
print(time)

获取x-date数据,添加至请求头,访问,可以成功返回

根据官方文档, 请求需要添加如下请求头

   -H "Host: hmac.com" \
   -H "Date: Thu, 22 Jun 2017 17:15:21 GMT" \
   -H 'Authorization: hmac username="alice123", algorithm="hmac-sha256", headers="date request-line", signature="ujWCGHeec9Xd6UD2zlyxiNMCiXnDOWeVFMu5VeRUxtw="'
相关标签: kong hmac api gw