C++ signing library for jdcloud.com
Table of Contents generated with DocToc
以下为git master分支版本的使用说明
京东云C++签名工具提供了C++语言访问京东云OpenAPI时的请求签名功能,它以AccessKey和SecretKey为素材,将HTTP请求的相关信息经过多次处理,再加上时间和nonce随机值对请求进行签名。使用本签名工具可以节省您编写签名过程的时间,没有正确签名,有可能会造成无法正常访问京东云OpenAPI。使用签名功能,可以保证您的身份不被冒充。请注意AK/SK的安全。
本签名工具使用C++11标准,以静态库的方式提供。使用的大致流程是:
- 将依赖的头文件和静态库通过cmake工具引入您的项目
- 将HTTP请求的信息填充到签名工具的 HttpRequest对象中
- 调用签名接口
- 把返回的HttpRequest对象中Header的Authorization、x-jdcloud-date、x-jdcloud-nonce三项及其值放到您的真实请求Header中
- 然后向京东云OpenAPI网关发起调用
sudo add-apt-repository ppa:jdcloud/sdk
sudo apt-get update
sudo apt-get install libjdcloud-signer-dev
yum install -y openssl-devel libuuid-devel gcc gcc-c++
make
make install
- 安装 homebrew
- 运行如下脚本
brew tap jdcloud-api/tap
# 稳定版
brew install libjdcloud_signer
# git head 版
brew install libjdcloud_signer --HEAD
- 安装Visual Stdio 2015以上版本,官方地址为:https://visualstudio.microsoft.com/
- 安装CMake 3.5以上版本,官方地址为:https://cmake.org/
- 在下载代码目录中执行
cmake .
- 下载openssl库并安装,地址:http://slproweb.com/products/Win32OpenSSL.html
- 使用Visual Studio打开Demo.sln解决方案,编译。生成路径为:src/Debug。
- 请参考 examples
// 引用头文件
#include "jdcloud_signer/Credential.h"
#include "jdcloud_signer/JdcloudSigner.h"
#include "jdcloud_signer/http/HttpTypes.h"
#include "jdcloud_signer/http/HttpRequest.h"
#include "jdcloud_signer/logging/Logging.h"
#include "jdcloud_signer/logging/ConsoleLogSystem.h"
using namespace std;
using namespace jdcloud_signer;
// 配置日志
ConsoleLogSystem* cls = new ConsoleLogSystem(LogLevel::Debug);
shared_ptr<ConsoleLogSystem> log(cls);
InitializeLogging(log);
// 创建HttpRequest对象
HttpRequest request(URI("http://www.jdcloud-api.com/v1/regions/cn-north-1/instances?pageNumber=2&pageSize=10"), HttpMethod::HTTP_GET);
request.SetHeaderValue(CONTENT_TYPE_HEADER, "application/json");
request.SetHeaderValue(USER_AGENT_HEADER, "JdcloudSdkCpp/1.0.2 vm/0.7.4");
// 创建签名对象
Credential credential("YOUR AK", "YOUR SK");
JdcloudSigner signer(credential, "vm", "cn-north-1");
// 调用签名方法
bool result = signer.SignRequest(request);
if(result)
{
// 把Header中的三项 "Authorization、x-jdcloud-date、x-jdcloud-nonce" 放到真正的请求头中
// 向京东云网关发起HTTP请求
}
else
{
return;
}
sudo apt install libssl-dev
cmake .
make
sudo make install
brew install openssl@1.1
cmake -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl@1.1/ .
make
sudo make install