接口鉴权

积分加分API使用签名方法(Signature)对接口进行鉴权。每一次调用积分加分接口的请求都需要在请求中包含签名信息,以验证用户身份。

在第一次使用积分系统加分API之前,需要向积分系统申请安全凭证,安全凭证包括SecretId和SecretKey,SecretId是用来标识API调用者的身份,SecretKey是用于加密签名字符串和服务器验证签名字符串的密钥。SecretKey必须严格保管,避免泄露。已有安全凭证的系统(用户)可以从生成签名开始操作。

申请安全凭证
其他系统第一次使用积分系统进行加分必须先申请安全凭证才可以使用。

  1. 由系统负责人邮件通知积分系统后台管理员,申请调用积分的加分接口
  2. 积分系统管理员进入积分系统后台,选择【权限管理】,进入【合作项目】页面,点击【添加项目】
  3. 在【新建应用】对话框中,【项目id】由积分系统后台自动生成,由积分系统管理员根据邮件内容输入【项目名称】,点击【获取】按钮,由系统自动生成SecretId ,SecretKey。
  4. 积分系统管理员邮件通知申请调用加分的系统申请得到的SecretId ,SecretKey,并附加confluence接口调用文档地址,以供其调用。
    生成签名串
    其他系统得到了上一步申请安全凭证,假设生成的的 SecretId 和 SecretKey 分别是:
     SecretId:AKIDz8krbsJ5yKBZQpn74WFkmLPx3gnPhESA。
     SecretKey:Gu5t9xGARNpq86cd98joQYCN3Cozk1qA

调用积分系统加分减分接口 addIntegral请求,请求参数为:

参数参数写法
方法名Action =addIntegral
密钥IDSecretId= AKIDz8krbsJ5yKBZQpn74WFkmLPx3gnPhESA
当前时间戳Timestamp =1465185768
随机正整数Nonce=11886
加分人的唯一标识id/项目的唯一标识idgivingUserId= 1071008930039197698
被加分人的唯一标识id列表idInfo= [ “1071008926490816514”, “1071008929686876162” ]
加分/减分分值Integral= 10
项目idpluginId= kernel-free
加分类型primaryId= 1
加分理由Reason=积极主动,表现优秀,为公司做出突出贡献
被加分人唯一标识iduserId

对参数排序
对请求参数按参数名做字典序升序排列,结果如下:

{
‘Action’ : ‘addIntegral’,
‘givingUserId’:‘1071008930039197698’,
‘idInfo’:’[
“1071008926490816514”,
“1071008929686876162”
]’,
‘integral’:10,
‘Nonce’ : 11886,
‘pluginId’:‘kernel-free’,
‘primaryId’:‘1’,
‘reason’:‘积极主动,表现优秀,为公司做出突出贡献’,
‘SecretId’ : ‘AKIDz8krbsJ5yKBZQpn74WFkmLPx3gnPhESA’,
‘Timestamp’ : 1465185768,
‘userId’:’’,
}
拼接请求字符串
把上一步排序好的请求参数,格式化成k=v,然后用“&”拼接在一起,注意v为原始值而非url编码后的值,结果

Action=addIntegral&givingUserId:1071008930039197698&idInfo:[“1071008926490816514”,“1071008929686876162”]&integral:10&Nonce=11886,&pluginId=kernel-free&primaryId=1&v&reason=积极主动,表现优秀,为公司做出突出贡献&SecretId=AKIDz8krbsJ5yKBZQpn74WFkmLPx3gnPhESA&Timestamp=1465185768

拼接签名原文字符串
拼接签名原文时需要如下参数:
 请求方法:支持POST方式,这里使用POST请求,注意方法为全大写。
 请求主机:dmsdbj.com,详见各接口详细说明
 请求路径:kernel-web/integral/addIntegral
 请求字符串:上一步生成的

Action=addIntegral&givingUserId:1071008930039197698&idInfo:[“1071008926490816514”,“1071008929686876162”]&integral:10&Nonce=11886,&pluginId=kernel-free&primaryId=1&v&reason=积极主动,表现优秀,为公司做出突出贡献&SecretId=AKIDz8krbsJ5yKBZQpn74WFkmLPx3gnPhESA&Timestamp=1465185768

签名原文的拼接规则为:
请求方法+请求主机+请求路径+?+请求字符串
拼接结果如下

POSTdmsdbj.com/kernel-web/integral/addIntegral?
Action=addIntegral&givingUserId:1071008930039197698&idInfo:[“1071008926490816514”,“1071008929686876162”]&integral:10&Nonce=11886,&pluginId=kernel-free&primaryId=1&v&reason=积极主动,表现优秀,为公司做出突出贡献&SecretId=AKIDz8krbsJ5yKBZQpn74WFkmLPx3gnPhESA&Timestamp=1465185768

生成签名串

  1. 使用HMAC-SHA1 算法对上面步骤中获得的 签名原文字符串 进行签名。
  2. 将生成的签名串使用 Base64 进行编码,获得最终的签名串。
    以Java语言为例:
    secretKey = ’ Gu5t9xGARNpq86cd98joQYCN3Cozk1qA ‘;
    srcStr=’ POSTdmsdbj.com/kernel-web/integral/addIntegral?
    Action=addIntegral&givingUserId:1071008930039197698&idInfo:[“1071008926490816514”,“1071008929686876162”]&integral:10&Nonce=11886,&pluginId=kernel-free&primaryId=1&v&reason=积极主动,表现优秀,为公司做出突出贡献&SecretId=AKIDz8krbsJ5yKBZQpn74WFkmLPx3gnPhESA&Timestamp=1465185768’;
    signStr = base64_encode(hash_hmac(‘sha1’, srcStr, secretKey, true));

得到的签名串为:
HgIYOPcx5lN6gz8JsCFBNAWp2oQ=

添加签名,发送请求
 请求参数中添加Signature参数,参数值为上一步生成的签名串,并且对签名进行url编码。上面生成的签名HgIYOPcx5lN6gz8JsCFBNAWp2oQ=,编码后为HgIYOPcx5lN6gz8JsCFBNAWp2oQ%3D
 如果是使用GET方法,则对所有请求参数的参数值做URL编码;若使用POST则除Signature参数外无需URL编码
 发送HTTPS协议请求即可得到JSON字符串格式的接口返回值

最终的请求URL为:
https://dmsdbj.com/kernel-web/integral/addIntegral
&Action=addIntegral&givingUserId:1071008930039197698,
&idInfo:[“1071008926490816514”,“1071008929686876162”]
&integral:10
&Nonce=11886,
&pluginId=kernel-free
&primaryId=1
&v&reason=积极主动,表现优秀,为公司做出突出贡献
&SecretId=AKIDz8krbsJ5yKBZQpn74WFkmLPx3gnPhESA
&Signature=HgIYOPcx5lN6gz8JsCFBNAWp2oQ%3D
&Timestamp=1465185768

错误码:

回调函数

<未完,待续更新>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值