AWS- создание динамического разрешения на ресурсы IOT с проприетарным пользователем
Мы реализуем функцию, когда мобильное приложение должно отправлять сообщение на теневое устройство. У нас есть пара требований: 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);
});