检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
概述 本手册将介绍如何使用AK/SK签名认证方式调用通过API网关开放的云服务API,提供签名流程与实现逻辑,以及Java、Go、Python、C等多种不同语言的签名SDK和调用示例。 部分云服务开放的API,不通过API网关,签名认证流程请先参考云服务自身提供的API参考手册。 各
Studio官方网站下载。 获取SDK 点此下载SDK与Demo。 解压后目录结构如下: 名称 说明 apigateway-signature\Signer.cs SDK代码 apigateway-signature\HttpEncoder.cs sdk-request\Program
request->addHeader("X-Project-Id", "xxx"); 进行签名,执行此函数会将生成的签名头加入request变量中。 1 signer.createSignature(request); 使用curl库访问API,查看访问结果。 1 2 3 4 5 6 7 8 9
API调用是否支持长连接 API网关支持长连接。 注意适当使用,避免占用太多资源。 父主题: 常见问题
获取方式请参考获取账号名和账号ID。 x-stage API接口的环境,请参考各云服务的接口API的环境信息。 Host API接口所属分组的调试域名或独立域名。 请参考各云服务的接口所属API分组中的域名信息。 API调用。 本手册提供Java、Go、Python、C等多种不同语言
到您的API所在分组。请检查API所在的分组域名,例如您有多个API分组,每个分组有自己的独立域名,API调用时,使用了其他分组的独立域名。 检查API是否使用OPTIONS跨域请求,如果使用OPTIONS跨域请求,请在API中开启CORS,并创建OPTIONS方式的API。具体操作请参考开启跨域共享。
3986规范化URI路径,移除冗余和相对路径部分,路径中每个部分必须为URI编码。如果URI路径不以“/”结尾,则在尾部添加“/”。 举例: URI具体见云服务的API参考手册,每个API章节都提供对应的资源路径。如虚拟私有云服务的查询VPC列表:/v1/{project_id}/vpcs,此时规范的URI编码为:
获取EndPoint 地区与终端节点,即云服务在不同Region有不同的访问域名。 获取方式请参考地区和终端节点。 本手册所有关于请求URL的举例,其中Endpoint以service.region.example.com为例。 父主题: AK/SK签名认证操作指导
计算签名 将SK(Secret Access Key)和创建的待签字符串作为加密哈希函数的输入,计算签名,将二进制值转换为十六进制表示形式。 伪代码如下: signature = HexEncode(HMAC(Secret Access Key, string to sign))
检查APP是否授权访问API APIGW.0305 Incorrect authentication information. 401 认证信息错误 检查认证信息是否正确 APIGW.0306 API access denied. 403 不允许访问API 检查是否授权访问API APIGW.0307
AK/SK签名认证操作指导 AK/SK签名认证操作流程 获取EndPoint 获取AK/SK 获取项目ID 获取账号名和账号ID 签名SDK与demo
子项目场景下怎么调用API 子项目场景下调用API: 如果您的资源在子项目中,调用云服务API时需要增加一个请求消息头参数X-Project-Id,参数值填您的项目ID。 参数X-Project-Id相关操作请参见签名SDK与demo。 父主题: 常见问题
AK/SK签名认证算法详解 AK/SK签名认证流程 构造规范请求 创建待签字符串 计算签名 添加签名信息到请求头
{"X-Project-Id": "xxx"}; 进行签名,执行此函数会生成请求参数,用于创建https请求,请求参数中添加了用于签名的X-Sdk-Date头和Authorization头。 1 var opt = sig.Sign(r) 访问API,查看访问结果。 1 2 3 4 5
nish”。 完成工程创建后,目录结构如下。 请求签名与API调用 在命令行中,使用pip安装“requests”库。 1 pip install requests 在工程中引入apig_sdk。 1 2 from apig_sdk import signer import requests
完成工程创建后,目录结构如下。 图3 新建工程go的目录结构 “demo.go”为示例代码,请根据实际情况修改参数后使用。具体代码说明请参考请求签名与API调用。 请求签名与API调用 在工程中引入sdk(signer.go)。 import "./core" 生成一个新的Signer,分别输入AK和SK值。
"error_code": "APIGW.0303", "request_id": "a5322eb8904***d705491a76a05aca" } 可能原因 appkey配置错误。 解决方法 在API网关控制台页面的左侧导航栏中选择“API管理 > 凭据管理”。 单击对应的凭据名称,进入凭据详情。
array( 'X-Project-Id' => 'xxx', ); 进行签名,执行此函数会生成一个$curl上下文变量。 1 $curl = $signer->Sign($req); 访问API,查看访问结果。 1 2 3 4 $response = curl_exec($curl);
常见问题 子项目场景下怎么调用API API调用是否支持长连接 Body体是否可以不参与签名 请求消息头参数是否可以不参与签名 使用临时AK/SK做签名 IAM认证信息错误 APP认证信息错误 "The API does not exist or has not been published
headers, "X-Project-Id", "xxx"); 进行签名,执行此函数会将生成的签名头加入request变量中。 1 sig_sign(¶ms); 使用curl库访问API,查看访问结果。 1 2 3 4 5 6 7 8 9 10 11