# API签名指南 > 使用签名认证调用通过网关开放的API ## API签名指南 - [概述](https://support.huaweicloud.com/devg-apisign/api-sign-provide01.md): 本手册介绍如何使用AK/SK签名认证方式调用通过API网关开放的云服务API。用户首先需要获取API信息和获取AK/SK,然后参考Java签名指导、Go签名指导、Python签名指导、C#签名指导、JavaScript签名指导、PHP签名指导、C++签名指导、C签名指导、Android签名指导章节,根据各语言的签名SDK和调用示例进行签名 - [获取API信息](https://support.huaweicloud.com/devg-apisign/api-sign-provide-start.md): API调用需要获取以下信息: 用于组成请求URL的Endpoint和URI。用于签名和认证的AK/SK。用于区分租户的项目ID、子项目ID。用于区分租户的账号名、账号ID。用于API的环境信息。用于Host的域名信息。信息收集项信息项说明Endpoint地区与终端节点,即云服务在不同Region有不同的访问域名。获取方式请参考地区和终端节 - [获取AK/SK](https://support.huaweicloud.com/devg-apisign/api-sign-provide-aksk.md): 如果已生成过AK/SK,则可跳过此步骤,找到原来已下载的AK/SK文件,文件名一般为:credentials.csv。如下图所示,AK(Access Key Id),SK(Secret Access Key)。每个用户最多可创建2个访问密钥,不支持增加配额。每个访问密钥权限相同,相互独立,包括一对AK/SK,有效期为永久,每个访问密钥仅能 - [Java签名指导](https://support.huaweicloud.com/devg-apisign/api-sign-sdk-java.md): 本节以IDEA工具为例,介绍如何在Java环境中集成API请求签名的SDK。您可以直接导入示例代码,然后参考调用说明部分将签名SDK集成到您的应用中。签名SDK只包含签名功能,不包含云服务的SDK功能,云服务SDK请参见SDK。获取并安装IDEA 2022.2.1及以上,可至IDEA官方网站下载可执行文件进行安装,或者下载全量压缩包并解压 - [Go签名指导](https://support.huaweicloud.com/devg-apisign/api-sign-sdk-go.md): 本节以IntelliJ IDEA工具为例,介绍如何在Go环境中集成API请求签名的SDK。您可以直接导入示例工程体验,然后参考调用说明部分将签名SDK集成到您的应用中。签名SDK只包含签名功能,不包含云服务的SDK功能,云服务SDK请参见SDK。获取并安装IntelliJ IDEA 2022.2.1或以上版本,可至IntelliJ IDE - [Python签名指导](https://support.huaweicloud.com/devg-apisign/api-sign-sdk-python.md): 本节以IntelliJ IDEA版本为例,介绍如何在Python环境中集成API请求签名的SDK。您可以直接导入示例工程体验,然后参考调用说明部分将签名SDK集成到您的应用中。签名SDK只包含签名功能,不包含云服务的SDK功能,云服务SDK请参见SDK。获取并安装IntelliJ IDEA 2018.3.5或以上版本,可至IntelliJ - [C#签名指导](https://support.huaweicloud.com/devg-apisign/api-sign-sdk-csharp.md): 本节以Visual Studio工具为例,介绍如何在C#环境中集成API请求签名的SDK。您可以直接导入示例工程体验,然后参考调用说明部分将签名SDK集成到您的应用中。签名SDK只包含签名功能,不包含云服务的SDK功能,云服务SDK请参见SDK。获取并安装Visual Studio 2019 version 16.8.4或以上版本,可至V - [JavaScript签名指导](https://support.huaweicloud.com/devg-apisign/api-sign-sdk-nodejs.md): 本节以IntelliJ IDEA工具为例,介绍如何在Js环境中集成API请求签名的SDK。您可以直接导入示例工程体验,然后参考调用说明部分将签名SDK集成到您的应用中。以搭建Node.js开发环境为例介绍JavaScript的SDK集成。签名SDK只包含签名功能,不包含云服务的SDK功能,云服务SDK请参见SDK。获取并安装Intelli - [PHP签名指导](https://support.huaweicloud.com/devg-apisign/api-sign-sdk-php.md): 本节以IntelliJ IDEA工具为例,介绍如何在PHP环境中集成API请求签名的SDK。您可以直接导入示例工程体验,然后参考调用说明部分将签名SDK集成到您的应用中。签名SDK只包含签名功能,不包含云服务的SDK功能,云服务SDK请参见SDK。获取并安装IntelliJ IDEA2018.3.5或以上版本,可至IntelliJ IDE - [C++签名指导](https://support.huaweicloud.com/devg-apisign/api-sign-sdk-cplus.md): 以Linux Ubuntu系统为例,首先需要安装SSL相关工具。安装openssl库。apt-get install libssl-dev安装curl库。apt-get install libcurl4-openssl-dev签名SDK只包含签名功能,不包含云服务的SDK功能,云服务SDK请参见SDK。点此下载SDK与Demo。解压时选择 - [C签名指导](https://support.huaweicloud.com/devg-apisign/api-sign-sdk-c.md): 以Linux Ubuntu系统为例,首先需要安装SSL相关工具。安装openssl库。apt-get install libssl-dev安装curl库。apt-get install libcurl4-openssl-dev签名SDK只包含签名功能,不包含云服务的SDK功能,云服务SDK请参见SDK。点此下载SDK与Demo。解压时选择 - [Android签名指导](https://support.huaweicloud.com/devg-apisign/api-sign-sdk-android.md): 本节以Android Studio工具为例,介绍如何在Android环境中集成API请求签名的SDK。您可以直接导入示例工程体验,然后参考调用说明部分将签名SDK集成到您的应用中。获取并安装Android Studio 4.1.2或以上版本,可至Android Studio官方网站下载。签名SDK只包含签名功能,不包含云服务的SDK功能, - [API签名认证机制](https://support.huaweicloud.com/devg-apisign/api-sign-algorithm-001.md): 如果以上的语言签名示例中没有对应的编程语言,请根据API签名认证机制,自主实现请求的签名。将待发送的请求内容按照与API网关后台约定的规则组装,确保客户端签名、API网关后台认证时使用的请求内容一致,从而完成身份校验。HTTP请求规范伪代码如下:CanonicalRequest = HTTPRequestMethod + '\n' + / - [API签名认证机制示例](https://support.huaweicloud.com/devg-apisign/api-sign-algorithm-002.md): 以虚拟私有云服务的一个查询VPC列表接口为例,假设原始请求如下:HTTPRequestMethodGETCanonicalURI查询VPC列表的URI为/v1/{project_id}/vpcs,project_id为77b6a44cba5143ab91d13ab9a8ff44fd,规范URI为:/v1/77b6a44cba5143ab9 - [错误码说明](https://support.huaweicloud.com/devg-apisign/api-sign-errorcode.md): 当您使用各云服务的API时,如果遇到以云服务简称开头的错误码,请参考各云服务自身提供的API参考手册中的“错误码”章节进行处理;如果遇到“APIGW”开头的错误码,请参考如下语义与解决方案进行处理。 - [子项目场景下怎么调用API](https://support.huaweicloud.com/devg-apisign/api-sign-multi-project.md): 如果您的资源在子项目中,调用云服务API时需要增加一个请求消息头参数X-Project-Id,参数值填您的子项目ID。X-Project-Id参数值获取请参见获取API信息。 - [API调用是否支持长连接](https://support.huaweicloud.com/devg-apisign/api-sign-long-conn.md): API网关支持长连接。注意适当使用,避免占用太多资源。 - [Body体是否可以不参与签名](https://support.huaweicloud.com/devg-apisign/api-sign-exclude-body.md): 当您不想对Body进行签名时,请在消息头添加以下参数和参数值:X-Sdk-Content-Sha256:UNSIGNED-PAYLOAD添加之后,对body计算hash的位置的值为UNSIGNED-PAYLOAD。 - [请求消息头参数是否可以不参与签名](https://support.huaweicloud.com/devg-apisign/api-sign-exclude-header.md): 如果您按照API签名认证机制自行完成API请求签名,请注意X-Sdk-Date必须参与签名,其他请求消息头参数可选。如果您使用华为云提供的SDK进行签名,则不需要考虑哪些请求消息头参数参与签名,SDK的签名方法自行决定哪些参数参与签名,并生成签名信息。如果某个请求消息头参数的值在签名后会发生变化,请完成签名后再对其赋值。 - [使用临时AK/SK做签名](https://support.huaweicloud.com/devg-apisign/api-sign-securetoken.md): 如果使用临时AK/SK对请求签名,您将签名SDK集成到应用时,请在消息头添加以下参数和参数值:X-Security-Token:{securityToken}然后使用临时AK/SK对请求进行签名,签名SDK与AK/SK的签名SDK一致。例如获得响应参数为:{ "credential": { "access": "P - [IAM认证信息错误](https://support.huaweicloud.com/devg-apisign/api-sign-0001.md): IAM认证信息错误有:Incorrect IAM authentication information: verify aksk signature failIncorrect IAM authentication information: AK access failed to reach the limit, forbiddenInc - ["The API does not exist or has not been published in the environment."如何解决?](https://support.huaweicloud.com/devg-apisign/api-sign-0002.md): 调用云服务开放的API报错,请按以下顺序排查可能原因:调用API所使用的域名、请求方法、路径不正确。比如创建的API为POST方法,您使用了GET方法调用。比如访问的URL比API详情中的URL少一个“/”也会导致无法匹配上此API,例如https://vpc.region.cloud.com/test/和https://vpc.regi