提问人:sshakya 提问时间:11/18/2023 更新时间:11/18/2023 访问量:7
在 React 的 mqtt connect 客户端选项中使用 transformWsUrl() 的 Amplify Signer.signUrl() 时如何更新会话令牌?
How to update session token when using Amplify Signer.signUrl() for transformWsUrl() in mqtt connect client options in React?
问:
我有一个使用 Cognito 进行联合身份验证的 IoT React 应用程序,并使用 AWS IoT Core 作为 IoT 代理。我在项目中使用 Amplify 和 mqtt 库。
我需要创建一个签名的 url 来连接到代理。
我是这样做的:
import { MqttClient, connect } from 'mqtt'
import { API, Auth, Signer } from 'aws-amplify'
...
const {accessKeyId, secretAccessKey,sessionToken} = await Auth.currentCredentials()
const signedUrl = generateSignedUrl({accessKeyId, secretAccessKey, sessionToken})
connect(signedUrl , {
...
transformWsUrl: () => generateSignedUrl({accessKeyId, secretAccessKey, sessionToken})
})
...
function generateSignedUrl({accessKeyId, secretAccessKey, sessionToken}) {
...
return Signer.signUrl(
endpoint,
{
access_key: accessKeyId,
secret_key: secretAccessKey,
session_token: sessionToken
},
serviceInfo
)
}
这最初有效。但最终(尤其是在移动设备上,如果选项卡处于非活动状态 1+ 小时),当我尝试重新连接到我的 mqtt 代理时,我收到 403 错误。我猜这是因为我现在有一个新的会话令牌,但仍将旧令牌传递给 .但是,由于不接受 Promises,我不知道在哪里检索要传递给的新令牌。generateSignedUrl()
transformWsUrl()
generateSignedUrl()
在这种情况下,如何将更新的令牌传递到更新后的令牌?transformWsUrl()
谢谢。
答: 暂无答案
评论