【发布时间】:2019-09-18 22:36:07
【问题描述】:
来自联合登录的 AWS IOT 连接(在 cognito Identity 中)不成功
- 在 cognito 用户池中,我使用 Microsoft 帐户作为 OIDC 设置身份提供者,并使用 Microsoft Office 凭据登录。
- 通过交换从 Microsoft 生成的代码,我能够从 cognito 令牌端点获取访问令牌、刷新令牌和 Id 令牌。
- 通过与 aws.config.credentials 交换 id 令牌,我成功检索了访问密钥 ID、密钥和会话令牌。
- 我正在尝试通过提供访问密钥 ID、密钥和会话令牌来连接 AWS iot 端点。
- 与 websocket 的连接不成功,并引发以下错误。
2019-04-29 14:48:12.006 TRACEID:420de021-715b-d81d-4a5e-daedde37dfd4 PRINCIPALID:AROAIN6B4B4KMSI2U3UEY:CognitoIdentityCredentials [ERROR] EVENT:MQTT Client Connect MESSAGE:连接状态:AUTHORIZATION_ERRORp 失败原因:AUTHORIZATION_ >
注意:使用 cognito 用户连接成功
'''
function connectWSHandler(dispatch){
var AWS = require('aws-sdk');
var AWSIoTData = require('aws-iot-device-sdk');
var AWSConfiguration = {
poolId: 'us-east-1:*****************************',
host:"a************-ats.iot.us-east-1.amazonaws.com",
region: 'us-east-1'
};
var wsOptions = {
handshakeTimeout:15000,
rejectUnauthorized:false
}
var clientId = localStorage.getItem("IdentityId");
var accessKeyId = localStorage.getItem("AccessKeyId");
console.log('accessKeyId',accessKeyId);
var secretKey = localStorage.getItem("SecretKey");
var sessionToken = localStorage.getItem("SessionToken");
if(accessKeyId==null || secretKey==null || sessionToken==null)return;
mqttClient = AWSIoTData.device({
host:AWSConfiguration.host,
clientId: clientId,
protocol: 'wss',
websocketOptions:wsOptions,
maximumReconnectTimeMs: 8000,
debug: true,
accessKeyId: accessKeyId,
secretKey: secretKey,
sessionToken: sessionToken
});
与 AWS IOT 的连接应该成功
【问题讨论】:
标签: node.js amazon-web-services openid-connect aws-iot