ユーザー管理と認証に AWS Cognito を使用する REST バックエンドを備えた単一ページアプリケーションを開発しています。
ユーザーがトークンなしでページに入ると、次の一連のステップが発生するように構造化しました。
- Cognito のデフォルトのログイン ページにリダイレクトする
- ユーザーがログインし、ホスト/authenticate.htmlにリダイレクトされます
- AJAX 呼び出しが Cognito のトークン エンドポイントに送信され、ユーザーのトークンが返されます。これらはに保存されます
sessionStorage
- ユーザーは Web アプリケーションにリダイレクトされ、認証されます。
アプリケーションにUsersとAdminsの 2 つのユーザー ロールを設定したいと考えています。ユーザーはAWSのサービスを呼び出すことを許可されるべきではありません。一方、管理者は会社に代わって他のユーザーを作成/招待し、管理者に昇格させることを許可されるべきです。
現在、管理者権限を有効にするユーザー プールと Web アプリケーション用の ID プールを設定しています。次のコードを使用して ID プールで認証します。
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);
});
ただし、私の理解では、IAM ロールはユーザー自体ではなく ID プールに関連付けられているため、Web アプリケーションのすべてのユーザーが管理者権限を持つことができます。
これを達成する簡単な方法はありますか?
ご不明な点がございましたら、お気軽にご質問ください。ご協力いただきありがとうございます。