Мы реализуем функцию, когда мобильное приложение должно отправлять сообщение на теневое устройство.У нас есть пара требований: 1. Мы используем нашего собственного проприетарного пользователя. 2. Приложение может общаться с теневым устройством в течение ограниченного времени. 3. Приложение может только отправлять сообщение своей текущей тени (определяется нашей бизнес-логикой.)
В настоящее время мы сделали 1. Создали пул удостоверений с разрешениями для всех пользователей выполнять все действия с ресурсами 1. Создать GUID (при регистрации пользователя) 2. Сохранить этот GUID в нашей базе данных (При регистрации пользователя)) 3. вызовите getOpenIdTokenForDeveloperIdentity с нашим GUID (при регистрации пользователя) 4. когда приложение хочет отправить сообщение, оно выполняет запрос API нашего сервиса, а сервер создает токен с помощью вызова acceptRole.Разумеется, разрешение генерируемого токена ограничено.
Это не работает для меня.потому что acceptRole должен вызываться со стороны клиента, а не со стороны сервера
Можете ли вы помочь мне с предложением потока
Спасибо!
export function getAwsCognitoToken(userIdentityId) {
AWS.config.update({
region: awsRegion,
});
const identity_provider_name = identityProviderName;
const params: OpenIdRequest = {
IdentityPoolId: awsIdentityPoolId,
Logins: {
[identity_provider_name]: 'us-east-1:' + userIdentityId,
},
};
const cognito = new AWS.CognitoIdentity({ apiVersion: '2014-06-30' });
return cognito.getOpenIdTokenForDeveloperIdentity(params).promise();
}
export function assumeRole(token) {
AWS.config.update({
region: awsRegion,
});
const sts = new AWS.STS();
var params2 : AssumeRoleRequest = {
DurationSeconds: 3600,
RoleArn: 'arn:aws:iam::***:role/iot_user_role',
RoleSessionName: 'app1',
WebIdentityToken: token,
};
sts.assumeRoleWithWebIdentity(params2, (err, data) => {
console.log(err), console.log(data);
});