OpenAPI 使用
-
在需要使用 Signature 身份验证的 Api 中贴上
[Authorize(AuthenticationSchemes = SignatureAuthenticationDefaults.AuthenticationScheme)] -
如果 Api 需要保留 Jwt 方式的身份验证,可贴上
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme + "," + SignatureAuthenticationDefaults.AuthenticationScheme)] -
通过对请求的签名,可以达到以下目的:
- 免登录识别访问接口用户的身份
- 防止潜在的重放攻击
OpenAPI 签名流程
客户端在请求时,需要按照如下步骤生成签名 Signature,并添加公共参数:公共请求参数
在原始请求的基础上添加 Header 请求参数
accessKey :身份标识timestamp :时间戳,精确到秒nonce :唯一随机数,建议为一个6位的随机数sign :签名数据(见“计算签名”部分)
计算签名
-
按照如下顺序对请求中的参数进行排序,各个参数通过&进行拼接(中间不含空格):
method & url & accessKey & timestamp & nonce method 需要大写,如:GETurl 去除协议、域名、参数,以 / 开头,如:/api/demo/helloWord
- 使用 HMAC-SHA256 协议创建基于哈希的消息身份验证代码 (HMAC),以
accessSecret 作为密钥,对上面拼接的参数进行计算签名,所得签名进行 Base-64 编码