签名sdk下载

sdk下载  时间:2021-05-05  阅读:()
API网关用户指南(调用API)用户指南(调用API)概述及样例概述您可以通过API网关,调用由其他阿里云用户或者第三方服务商开放的API服务.
API网关将为您提供一系列管理服务与支撑.
调用API您可以直接用API网关控制台为您提供的多语言调用示例来测试调用.
您也可以自行编辑HTTP(s)请求调用API.
签名方式您可以参照控制台的SDK示例下载.
API调用方式说明及示例如下:(调用API前期流程请参照快速入门(调用API)).
1.
请求请求地址请求方法请求体请求头部http://e710888d3ccb4638a723ff8d03837095-cn-qingdao.
aliapi.
com/demo/postPOSTFormParam1=FormParamValue1&FormParam2=FormParamValue2//HTTPRequestBodyAPI网关用户指南(调用API)12.
响应状态码响应头Host:e710888d3ccb4638a723ff8d03837095-cn-qingdao.
aliapi.
comDate:Mon,22Aug201611:21:04GMTUser-Agent:Apache-HttpClient/4.
1.
2(java1.
6)Content-Type:application/x-www-form-urlencoded;charset=UTF-8//请求体类型,请根据实际请求体内容设置.
Accept:application/json//请求响应体类型,部分API可以根据指定的响应类型来返回对应数据格式,建议手动指定此请求头,如果不设置,部分HTTP客户端会设置默认值*/*,导致签名错误.
X-Ca-Request-Mode:debug//是否开启Debug模式,大小写不敏感,不设置默认关闭,一般API调试阶段可以打开此设置.
X-Ca-Version:1//API版本号,目前所有API仅支持版本号『1』,可以不设置此请求头,默认版本号为『1』.
X-Ca-Signature-Headers:X-Ca-Request-Mode,X-Ca-Version,X-Ca-Stage,X-Ca-Key,X-Ca-Timestamp//参与签名的自定义请求头,服务端将根据此配置读取请求头进行签名,此处设置不包含Content-Type、Accept、Content-MD5、Date请求头,这些请求头已经包含在了基础的签名结构中,详情参照请求签名说明文档.
X-Ca-Stage:RELEASE//请求API的Stage,目前支持TEST、PRE、RELEASE三个Stage,大小写不敏感,API提供者可以选择发布到哪个Stage,只有发布到指定Stage后API才可以调用,否则会提示API找不到或InvalidUrl.
X-Ca-Key:60022326//请求的AppKey,请到API网关控制台生成,只有获得API授权后才可以调用,通过云市场等渠道购买的API默认已经给APP授过权,阿里云所有云产品共用一套AppKey体系,删除ApppKey请谨慎,避免影响到其他已经开通服务的云产品.
X-Ca-Timestamp:1471864864235//请求的时间戳,值为当前时间的毫秒数,也就是从1970年1月1日起至今的时间转换为毫秒,时间戳有效时间为15分钟.
X-Ca-Nonce:b931bc77-645a-4299-b24b-f3669be577ac//请求唯一标识,15分钟内AppKey+API+Nonce不能重复,与时间戳结合使用才能起到防重放作用.
X-Ca-Signature:FJleSrCYPGCU7dMlLTG+UD3Bc5Elh3TV3CWHtSKh1Ys=//请求签名.
CustomHeader:CustomHeaderValue//自定义请求头,此处仅作为示例,实际请求中根据API定义可以设置多个自定义请求头.
400//响应状态码,大于等于200小于300表示成功;大于等于400小于500为客户端错误;大于500为服务端错误.
X-Ca-Request-Id:7AD052CB-EE8B-4DFD-BBAF-EFB340E0A5AF//请求唯一ID,请求一旦进入API网关应用后,API网关就会生成请求ID并通过响应头返回给客户端,建议客户端与后端服API网关用户指南(调用API)21.
2.
3.
4.
--您调用API时,无论使用HTTP还是HTTPS协议提交请求,都需要在请求中包含签名信息.
AppKey用于标识您的身份,AppSecret是用于加密签名字符串和服务器端验证签名字符串的密钥.
详细加密签名的计算传递方式,请查看文档请求签名说明文档.
签名的计算demo请参照API网关控制台SDK下载页面的SDK示例.
若需要了解更多详情,请您查看用户指南(调用API).
应用(App)您需要创建应用(APP)作为您调用API的身份,每个APP有一对AppKey和AppSecret密钥对,AppKey需要在请求时作为参数在Header传入,AppSecret需要用于计算请求签名.
在API网关,您需要创建应用(APP)作为请求者的身份.
APP创建时,系统会自动分配一对AppKey和AppSecret.
在您请求API时,需要用到密钥.
详细加密签名的计算传递方式,请查看文档——请求签名说明文档.
AppKey和AppSecret密钥对,具备该APP的全部权限,需要妥善保管.
如果发生泄漏,您可以在API网关的控制台进行重置.
您可以拥有多个APP,可以根据您的业务需求分别被授权不同的API.
注意,API的授权对象是APP而不是阿里云用户账号.
您可以在API网关控制台完成对APP的创建、修改、删除、查看详情、密钥管理、查看已授权等管理操作.
授权授权,是指授予某个APP调用某个API的权限.
您的APP需要获得API的授权才能调用该API.
如果您在市场购买了API,那么您有权操作已购买的API授权给您的APP;如果您没有APP,购买时云市场会为您创建一个APP,并且授权,具体请前往云市场的控制台查看.
如果您想要使用合作伙伴提供的API,并无购买行为,是线下协议.
那么需要API的提供者主动操作授权.
您需要自行创建APP,并且向API的提供者提供您的AppId.
务都记录此请求ID,可用于问题排查与跟踪.
X-Ca-Error-Message:InvalidUrl//API网关返回的错误消息,当请求出现错误时API网关会通过响应头将错误消息返回给客户.
X-Ca-Debug-Info:{"ServiceLatency":0,"TotalLatency":2}//当打开Debug模式后会返回Debug信息,此信息后期可能会有变更,仅用做联调阶段参考API网关用户指南(调用API)31.
2.
3.
加密签名您调用API时,需要拼接签名字符串,并将签名计算后的字符串放在请求的Header传入,网关会通过对称计算签名来验证请求者的身份.
在请求的Header需要传入一个计算后的签名字符串.
您需要将入参信息按照请求签名说明文档组织成为Stringtosign,再用SDK样例中的算法计算签名.
计算结果就是上面提到的计算后的签名字符串.
HTTP和HTTPS请求,都需要加入请求签名.
请求签名Stringtosign的组织方法详见请求签名说明文档,您只需要在SDK样例中,将AppKey、AppSecret换成您自己的真实密钥值,再根据实际API文档按照签名文档组织Stringtosign,您就可以成功发起请求了.
使用限制限制项是否可调整调整方式每个账号下app个数上限为1000个,app名称应为账号下唯一是工单调用API的流控限制为,单个IP,QPS不超过100否-单次API调用请求包最大2MB否-您有权操作购买的API与app的授权和解除授权.
由服务提供方授权给您app的API,您无权操作解除授权否-您的请求需要包含签名信息,请参照文档请求签名说明文档否-API网关用户指南(调用API)4----------请求签名说明文档域名每个API服务都属于一个API分组,每个API分组有不同的域名.
域名是由服务端绑定的独立域名,API网关通过域名来寻址定位API分组.
域名的格式为www.
[独立域名].
com/[Path][HTTPMethod].
API网关通过域名定位到一个唯一的分组,通过Path+HTTPMethod确定该分组下唯一的API.
您购买后在控制台已购买的API可以获得API文档说明,若无购买行为,则可以联系API提供者操作授权,授权后您就可以在控制台已授权的API获得API文档说明.
系统级Header【必选】X-Ca-Key:AppKey.
【必选】X-Ca-Signature:签名字符串.
【可选】X-Ca-Timestamp:API调用者传递时间戳,值为当前时间的毫秒数,也就是从1970年1月1日起至今的时间转换为毫秒,时间戳有效时间为15分钟.
【可选】X-Ca-Nonce:API调用者生成的UUID,结合时间戳防重放.
【可选】Content-MD5当请求Body非Form表单时,可以计算Body的MD5值传递给云网关进行BodyMD5校验.
【可选】X-Ca-Stage请求API所属Stage,目前仅支持TEST、PRE和RELEASE,默认RELEASE,若您调用的API不在线上环境,请一定要指定该参数的值,否则会报URL错误.
签名校验组织参与签名计算的字符串StringstringToSign=HTTPMethod+"\n"+Accept+"\n"+//建议显示设置AcceptHeader.
当Accept为空时,部分Http客户端会给Accept设置默认值为*/*,导致签名校验失败.
Content-MD5+"\n"Content-Type+"\n"+Date+"\n"+Headers+UrlAPI网关用户指南(调用API)5-HTTPMethod为全大写,如POST.
Accept、Content-MD5、Content-Type、Date如果为空也需要添加换行符"\n",Headers如果为空不需要添加"\n".
Content-MD5Content-MD5是指Body的MD5值,只有当Body非Form表单时才计算MD5,计算方式为:bodyStream为字节数组.
HeadersHeaders是指参与Headers签名计算的Header的Key、Value拼接的字符串,建议对X-Ca开头以及自定义Header计算签名,注意如下参数不参与Headers签名计算:X-Ca-Signature、X-Ca-Signature-Headers、Accept、Content-MD5、Content-Type、Date.
Headers组织方法:先对参与Headers签名计算的Header的Key按照字典排序后使用如下方式拼接,如果某个Header的Value为空,则使用HeaderKeyn"参与签名,需要保留Key和英文冒号.
将Headers签名中Header的Key使用英文逗号分割放到Request的Header中,Key为:X-Ca-Signature-Headers.
UrlUrl指Path+Query+Body中Form参数,组织方法:对Query+Form参数按照字典对Key进行排序后按照如下方法拼接,如果Query或Form参数为空,则Url=Path,不需要添加,如果某个参数的Value为空只保留Key参与签名,等号不需要再加入签名.
Stringcontent-MD5=Base64.
encodeBase64(MD5(bodyStream.
getbytes("UTF-8")));Stringheaders=HeaderKey1+":"+HeaderValue1+"\n"\+HeaderKey2+":"+HeaderValue2+"\n"\+.
.
.
HeaderKeyN+":"+HeaderValueN+"\n"Stringurl=Path+""+Key1+"="+Value1+"&"+Key2+"="+Value2+.
.
.
"&"+KeyN+"="+ValueNAPI网关用户指南(调用API)6注意这里Query或Form参数的Value可能有多个,多个的时候只取第一个Value参与签名计算.
计算签名secret为APP的密钥.
传递签名将计算的签名结果放到Request的Header中,Key为:X-Ca-Signature.
签名错误排查方法当签名校验失败时,API网关会将服务端的StringToSign放到HTTPResponse的Header中返回到客户端,Key为:X-Ca-Error-Message,只需要将本地计算的StringToSign与服务端返回的StringToSign进行对比即可找到问题;如果服务端与客户端的StringToSign一致请检查用于签名计算的密钥是否正确;因为HTTPHeader中无法表示换行,因此StringToSign中的换行符都被过滤掉了,对比时请忽略换行符.
签名demo签名计算的详细demo(JAVA)请参照链接:https://github.
com/aliyun/api-gateway-demo-sign-java.
在API网关控制台,调用API—SDK下载处还有更多语种的调用demo.
通过Postman实现API网关的请求签名与调试通过Postman实现API网关的请求签名与调试MachmacSha256=Mac.
getInstance("HmacSHA256");byte[]keyBytes=secret.
getBytes("UTF-8");hmacSha256.
init(newSecretKeySpec(keyBytes,0,keyBytes.
length,"HmacSHA256"));Stringsign=newString(Base64.
encodeBase64(hmacSha256.
doFinal(stringToSign.
getBytes("UTF-8")),"UTF-8"));API网关用户指南(调用API)7----1.
前言Postman是一个非常强大的HTTP发包测试工具,目前Postman已经提供了Windows/Mac/Linux系统的客户端的下载,使用很方便.
不过API网关的调试,需要对HTTP请求进行签名才能调用,无法使用简单的curl等发包工具完成,但我们可以使用Postman工具提供的Pre-requestScript脚本来实现API网关的签名功能,实现API的调试功能,本文主要介绍.
2.
API网关签名算法介绍API网关的签名机制详细可以参考请求签名说明文档,这里简要介绍一下.
API网关的签名需要通过API网关的AppKey和AppSecret进行,Key/Secret可以在API网关的控制台上获得,并确保API已经发布,并且针对特定的APP做了授权操作.
针对一个普通请求,API网关的签名过程如下2.
1.
添加以下头用于辅助签名与安全认证2.
2.
组织需要签名的字符串StringToSignAccept、Content-MD5、Content-Type、Date如果为空也需要添加换行符"\n"只有From为非表单的方式才需要计算Content-MD5,计算方法为base64Encode(md5(body.
getBytes("UTF-8"))SignatureHeaders:以{HeaderName}:{HeaderValue}+"\n"的方式按照字符串顺序从小到大顺序添加,建议加入签名的头为X-Ca-Key,X-Ca-Nonce,其他头客户端实现可自行选择是否加入签名.
UrlToSign:将所有的Form字段和QueryString字段放在一起按照Name进行排序,如果Content-Type不是application/x-www-form-urlencoded类型则不拆开Form字段.
将排序好的键值对加到Path后面得到UrlToSign,例如请求/democ=1&a=2,Form为b=3则UrlToSign=/demoa=2&b=3&c=1-Date:日期头-X-Ca-Key:{AppKey}-X-Ca-Nonce:API调用者生成的UUID,实现防重放功能-Content-MD5:当请求Body为非Form表单时,用于校验Body是否被篡改,{HTTPMethod}+"\n"+{Accept}+"\n"+{Content-MD5}+"\n"{Content-Type}+"\n"+{Date}+"\n"+{SignatureHeaders}+{UrlToSign}API网关用户指南(调用API)8-----2.
3.
计算签名并附加签名相关Headers目前推荐使用HMacSHA256算法计算签名,签名的计算需要appSecret,计算方法为:signature=base64(hmacSHA256(stringToSign.
getBytes("UTF-8),appSecret)),计算完毕后还需要添加以下Headers:添加Header:X-Ca-Siguature:{signature}添加Header:X-Ca-SignatureMethod:HmacSHA256添加Header:X-Ca-SignatureHeaders:X-Ca-Key,X-Ca-Nonce2.
4.
签名错误排查方法当签名校验失败时,API网关会将服务端的StringToSign放到HTTP应答的Header中返回到客户端,Key为:X-Ca-Error-Message,只需要将本地计算的StringToSign与服务端返回的StringToSign进行对比即可找到问题,注意服务端返回的StringToSign将回车替换为了#;如果服务端与客户端的签名串是一致的,请检查用于签名计算的密钥是否正确;3.
使用Pre-requestScript实现签名算法根据上一节的描述,实现API网关调试的关键问题在于如何实现请求签名,Postman提供了可以通过JavaScript进行定制的,通过阅读Pre-requestScript的开发文档,我们可以通过Pre-requestScript脚本实现API网关的签名功能.
3.
1.
使用全局变量预制签名需要添加的头不过目前Postman不允许直接在脚本中修改请求,所以我们只能使用预制签名头并使用全局变量赋值的方式完成签名头的添加,我们将需要签名的头都预制在Postman的请求Header中,可以通过BulkEdit模式实现添加,BulkEdit请参照下图进行切换切换为BulkEdit模式后,可以将如下字符串复制粘贴到输入框当中,被{{}}括住的就是Postman的全局变量,我们在脚本中实现替换.
Form内容的可以不添加Content-MD5头Date:{{Date}}API网关用户指南(调用API)9粘贴后效果如图3.
2.
使用Pre-requestScript脚本实现签名功能点击红圈圈住的位置,可以输入Pre-requestScript,请复制粘贴下面提供的代码到文本框当中Content-MD5:{{Md5}}X-Ca-Nonce:{{Nonce}}X-Ca-Key:{{AppKey}}X-Ca-Signature:{{Signature}}X-Ca-SignatureMethod:HmacSHA256X-Ca-Signature-Headers:{{SignatureHeaders}}varappKey="";varappSecret="";varmd5=calcMd5();vardate=newDate().
toString();varnonce=createUuid();API网关用户指南(调用API)10vartextToSign="";textToSign+=request.
method+"\n";textToSign+=request.
headers["accept"]+"\n";textToSign+=md5+"\n";textToSign+=request.
headers["content-type"]+"\n";textToSign+=date+"\n";varheaders=headersToSign();varsignatureHeaders;varsortedKeys=Array.
from(headers.
keys()).
sort()for(varheaderNameofsortedKeys){textToSign+=headerName+":"+headers.
get(headerName)+"\n";signatureHeaders=signatureHeaderssignatureHeaders+","+headerName:headerName;}textToSign+=urlToSign();console.
log("textToSign\n"+textToSign.
replace(/\n/g,"#"));varhash=CryptoJS.
HmacSHA256(textToSign,appSecret)console.
log("hash:"+hash)varsignature=hash.
toString(CryptoJS.
enc.
Base64)console.
log("signature:"+signature)pm.
globals.
set('AppKey',appKey);pm.
globals.
set('Md5',md5);pm.
globals.
set("Date",date);pm.
globals.
set("Signature",signature);pm.
globals.
set("SignatureHeaders",signatureHeaders);pm.
globals.
set("Nonce",nonce);functionheadersToSign(){varheaders=newMap();for(varnameinrequest.
headers){name=name.
toLowerCase();if(!
name.
startsWith('x-ca-')){continue;}if(name==="x-ca-signature"||name==="x-ca-signature-headers"||name=="x-ca-key"||name==='x-ca-nonce'){continue;}varvalue=request.
headers[name];headers.
set(name,value);}headers.
set('x-ca-key',appKey);headers.
set('x-ca-nonce',nonce);returnheaders;}functionurlToSign(){varparams=newMap();varcontentType=request.
headers["content-type"];if(contentType&&contentType.
startsWith('application/x-www-form-urlencoded')){constformParams=request.
data.
split("&");formParams.
forEach((p)=>{constss=p.
split('=');params.
set(ss[0],ss[1]);})API网关用户指南(调用API)11接下来我们就可以实现API网关的调试了.
}constss=request.
url.
split('');if(ss.
length>1&&ss[1]){constqueryParams=ss[1].
split('&');queryParams.
forEach((p)=>{constss=p.
split('=');params.
set(ss[0],ss[1]);})}varsortedKeys=Array.
from(params.
keys())sortedKeys.
sort();varl1=ss[0].
lastIndexOf('/');varurl=ss[0].
substring(l1);varfirst=true;varqsfor(varkofsortedKeys){vars=k+"="+params.
get(k);qs=qsqs+"&"+s:s;console.
log("key="+k+"value="+params.
get(k));}returnqsurl+""+qs:url;}functioncalcMd5(){varcontentType=request.
headers["content-type"];if(request.
data&&!
contentType.
startsWith('application/x-www-form-urlencoded')){vardata=request.
data;varmd5=CryptoJS.
MD5(data);varmd5String=md5.
toString(CryptoJS.
enc.
Base64);console.
log("data:"+data+"\nmd5:"+md5String);returnmd5String;}else{return"";}}functioncreateUuid(){return'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.
replace(/[xy]/g,function(c){varr=Math.
random()*16|0,v=c=='x'r:(r&0x3|0x8);returnv.
toString(16);});}API网关用户指南(调用API)12

Asiayun:枣庄电信Asiayun美国Cera葵湾VPSvps月付,美国CERA VPS月付26元/年

亚洲云Asiayun怎么样?亚洲云成立于2021年,隶属于上海玥悠悠云计算有限公司(Yyyisp),是一家新国人IDC商家,且正规持证IDC/ISP/CDN,商家主要提供数据中心基础服务、互联网业务解决方案,及专属服务器租用、云服务器、云虚拟主机、专属服务器托管、带宽租用等产品和服务。Asiayun提供源自大陆、香港、韩国和美国等地骨干级机房优质资源,包括BGP国际多线网络,CN2点对点直连带宽以...

RackNerd($199/月),5IP,1x256G SSD+2x3THDD

我们先普及一下常识吧,每年9月的第一个星期一是美国劳工节。于是,有一些服务商会基于这些节日推出吸引用户的促销活动,比如RackNerd有推出四款洛杉矶和犹他州独立服务器,1G带宽、5个独立IP地址,可以配置Windows和Linux系统,如果有需要独立服务器的可以看看。第一、劳工节促销套餐这里有提供2个套餐。两个方案是选择犹他州的,有2个方案是可以选择洛杉矶机房的。CPU内存SSD硬盘配置流量价格...

paypal$10的代金券,选购美国VPS

paypal贝宝可撸$10的代金券!这两天paypal出了活动,本次并没有其他的限制,只要注册国区的paypal,使用国内的手机号和62开头的银联卡,就可以获得10美元的代金券,这个代金券购买产品需要大于10.1美元,站长给大家推荐几个方式,可以白嫖一年的VPS,有需要的朋友可以看看比较简单。PayPal送10美元活动:点击直达活动sfz与绑定卡的号码可以重复用 注册的邮箱,手机号与绑的银联卡必须...

sdk下载为你推荐
recordsto操作httpphpweb破解如何破解网络锁企业cmscms是什么德国iphone禁售令德国买iPhone现在多少钱?支付宝调整还款日花呗还款日是什么时候呢360公司迁至天津天津360公司?360开户哪家好?360开户费多少?360推广怎么样?360效果怎么样?360和百度相比哪个更合适?flashftp下载禁室迷情夜下载地址给我 谢谢要能下载出来的360arp防火墙在哪360ARP防火墙期刊eset
大连虚拟主机 域名升级访问中 域名主机空间 日本私人vps 三级域名网站 openv 2017年黑色星期五 全能主机 发包服务器 gg广告 100x100头像 anylink 腾讯云分析 免费高速空间 多线空间 七夕快乐英语 免费asp空间申请 免费赚q币 ipower qq空间打开很慢 更多