0

ユーザー管理と認証に AWS Cognito を使用する REST バックエンドを備えた単一ページアプリケーションを開発しています。

ユーザーがトークンなしでページに入ると、次の一連のステップが発生するように構造化しました。

  1. Cognito のデフォルトのログイン ページにリダイレクトする
  2. ユーザーがログインし、ホスト/authenticate.htmlにリダイレクトされます
  3. AJAX 呼び出しが Cognito のトークン エンドポイントに送信され、ユーザーのトークンが返されます。これらはに保存されますsessionStorage
  4. ユーザーは Web アプリケーションにリダイレクトされ、認証されます。

アプリケーションにUsersAdminsの 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 アプリケーションのすべてのユーザーが管理者権限を持つことができます。

これを達成する簡単な方法はありますか?

ご不明な点がございましたら、お気軽にご質問ください。ご協力いただきありがとうございます。

4

1 に答える 1