Я занимаюсь разработкой одностраничного приложения с бэкэндом REST, в котором используется AWS Cognito для управления пользователями и аутентификации.
Я структурировал его так, что когда пользователь заходит на страницу без токена, происходит следующая последовательность шагов:
- Перенаправление на страницу входа по умолчанию в Cognito
- Пользователь входит в систему и перенаправляется на хост / authenticate.html
- AJAX-вызов отправляется на конечную точку токена Cognito, которая возвращает токены пользователя. Они хранятся в
sessionStorage
- Пользователь перенаправлен в веб-приложение и теперь проходит проверку подлинности
Я хочу, чтобы в моем приложении было две роли пользователя: Пользователи и Администраторы . Пользователям нельзя разрешать звонить на любые сервисы AWS, где Администраторам должно быть разрешено создавать / приглашать и продвигать других пользователей для администраторов от имени своей компании.
В настоящее время я настроил пул удостоверений для пула пользователей и веб-приложения, который разрешает права администратора. Я проверяю подлинность с помощью пула удостоверений, используя следующий код:
AWS.config.region = "eu-central-1";
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'eu-central-1:<my-indentitypool-id>',
Logins: {
'cognito-idp.eu-central-1.amazonaws.com/<my-userpool-id>':
sessionStorage.getItem('id_token')
}
});
AWS.config.credentials.get(function(err){
if (err) {
console.error(err);
}
console.log("Authenticated");
cisp = new AWS.CognitoIdentityServiceProvider();
});
А когда админ хочет создать пользователя:
cisp.adminCreateUser(params, function(err, data) {
if (err)
console.log(err, err.stack);
else
console.log(data);
});
Однако, насколько я понимаю, это позволило бы всем пользователям веб-приложения иметь права Admin , поскольку роль IAM связана с пулом идентификации, а не с пользователями как таковыми.
Есть ли простой способ достичь этого?
Пожалуйста, не стесняйтесь задавать вопросы, если что-то неясно, и заранее спасибо за вашу помощь.