简介
鉴权功能的位置处于基础服务的接入网关中。
1. 认证简介
本鉴权方案是在api层面上进行,通过使用Access Key/Secret Key加密的方法来对验证某个请求的调用者身份。
当接入网关接收到业务调用方的请求时,将使用相同的SK和同样的认证机制生成认证字符串,并与用户请求中包含的认证字符串进行比对。如果认证字符串相同,系统认为用户拥有指定的操作权限,并执行相关操作;如果认证字符串不同,系统将忽略该操作并返回错误码。
2. 认证过程
业务云侧请求
note left of 业务云侧: 预置分配的AK/SK
业务云侧->业务云侧: 生成认证字符串
业务云侧->网关: 携带认证字符串的业务请求
网关->网关: 鉴权
网关-->业务云侧: 鉴权失败,返回401
网关->基础服务: 鉴权成功,透传请求
业务端侧请求
业务端侧->业务云侧: 获取携带认证字符串某个api的请求url
note right of 业务云侧: 预置分配的AK/SK
业务云侧->业务云侧: 生成认证字符串
业务云侧->业务端侧: 返回携带认证字符串的url
业务端侧->网关: 使用业务云侧返回的url进行业务请求
网关->网关: 鉴权
网关-->业务云侧: 鉴权失败,返回401
网关->基础服务: 鉴权成功,透传请求
3. 认证字符串生成简介
3.1 概述
在生成认证字符串之前,首先需要生成Signature。为了生成Signature,用户需要首先构建CanonicalRequest并计算SigningKey。
注:
函数名
功能描述
HMAC-SHA256-HEX()
调用HMAC SHA256算法,根据开发者提供的密钥(key)和密文(message)输出密文摘要,并把结果转换为小写形式的十六进制字符串。
Lowercase()
将字符串全部变成小写。
Trim()
去掉字符串开头和结尾的空白字符。
UriEncode()
RFC 3986规定,"