AWS物联网-通过.Net、REST和证书访问影子
为了学习AWS IoT,我创建了一些“东西”+策略,我甚至能够使用IoT CLI来列出东西或列出策略。我甚至可以通过CLI使用update thing命令通过CLI更新阴影。但一旦我尝试通过REST GET/POST请求(通过.Net程序或直接类似程序)访问阴影,我就会收到 “缺少身份验证令牌” 。所以我开始使用证书。以下是我的部分代码:AWS物联网-通过.Net、REST和证书访问影子,rest,authentication,amazon-web-services,iot,Rest,Authentication,Amazon Web Services,Iot,为了学习AWS IoT,我创建了一些“东西”+策略,我甚至能够使用IoT CLI来列出东西或列出策略。我甚至可以通过CLI使用update thing命令通过CLI更新阴影。但一旦我尝试通过REST GET/POST请求(通过.Net程序或直接类似程序)访问阴影,我就会收到 “缺少身份验证令牌” 。所以我开始使用证书。以下是我的部分代码: string Certificate = "xxxxxxxxx-certificate.crt"; // downloaded from my thing X
string Certificate = "xxxxxxxxx-certificate.crt"; // downloaded from my thing
X509Certificate cert = new X509Certificate(Certificate);
WebRequestHandler handler = new WebRequestHandler();
handler.ClientCertificates.Add(cert);
HttpClient client = new HttpClient(handler);
// url = @"https://xxxxxxxxxxxxx.iot.us-west-2.amazonaws.com/things/<mything>/shadow";
HttpResponseMessage webResponse = client.GetAsync(url, HttpCompletionOption.ResponseContentRead).Result;
string Certificate=“xxxxxxxxx-Certificate.crt”//从我的东西上下载
X509Certificate cert=新的X509Certificate(证书);
WebRequestHandler=新的WebRequestHandler();
handler.ClientCertificates.Add(cert);
HttpClient=新的HttpClient(处理程序);
//url=@“https://xxxxxxxxxxxxx.iot.us-west-2.amazonaws.com/things//shadow";
HttpResponseMessageWebResponse=client.GetAsync(url,HttpCompletionOption.ResponseContentRead).Result;
结果是:
状态代码:403,原因短语:“禁止”,版本:1.1,内容:System.Net.Http.StreamContent,标题:{
x-amzn-RequestId:25f3c1dc-9ddd-4787-a4cf-cb79dc96748b
连接:保持活动状态
x-amzn-ErrorType:禁止异常:
日期:2015年12月15日星期二08:53:56 GMT
内容长度:91
内容类型:应用程序/json
}
有什么帮助吗?如果您想发布和/或订阅主题,可以采取两种不同的方法
- 第一步是定义动词(GET、POST等)
- 步骤2:创建规范URI
- 步骤3:创建规范查询字符串
- 步骤4:创建规范头和签名头
- 步骤5:创建已签名标题的列表
- 步骤6:创建有效负载哈希(请求正文内容的哈希)
- 步骤7:组合元素以创建规范请求