質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.03%

【Amazon Cognito】【User Pools】属性の重複チェック

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,334

lion_

score 28

前提・実現したいこと

【実現したいこと】
サインアップする際に入力されたemailに対して、Poolユーザの属性に既に同一emailを指定しているユーザがいないか確認したい。

発生している問題・エラーメッセージ

【発生している問題】
最も理想的なのは、cognito自身が属性に指定したメールアドレスの重複チェックを実施してくれればよいのですが
現状「別username」、「同一email」でもpoolできてしまうのでこれを解決したい。
※そもそもemailにAliasを設定しているのになぜ同一emailが指定できるのかもログイン未実装のためまだよくわかっていません・・。

cognito関連のドキュメントを閲覧していくとlistUsersを使用してユーザ情報がリスト取得できるとあったので
ドキュメントに倣い以下を実装したのですがエラーがでます。

var params = {
    UserPoolId : --,
    AttributesToGet: [],
    Filter: "email = hoge@example.com",
    Limit: 2
};
var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
cognitoidentityserviceprovider.listUsers(params, function(err, data) {
    if (err) {
        console.log(err);
    } else {
        console.log(data);
    }
});
message":"User: arn:aws:sts::---:assumed-role/Cognito_HOGE_Role/CognitoIdentityCredentials is not authorized to perform: cognito-idp:ListUsers on resource: arn:aws:cognito-idp:us-east-1:---:userpool/us-east----","code":"AccessDeniedException","time":"2017-07-05T07:17:34.072Z","requestId":"03ee977a-6152-11e7-98a3-895655ba5d13","statusCode":400,"retryable":false,"retryDelay":62.65074356583431}

このエラーメッセージを見る限り、ロール:Cognito_HOGE_RoleがlistUsersの実行権限を持ってないのだと思うのですが、
現状このあたりで手が止まっています。

どなたか解決できる方法を教示頂けますか?
よろしくお願い致します。

補足情報

当初usernameにemailを指定しており、これであればusernameは重複を許さないので
当件が該当することはなかったのですがusernameは一度登録したら変更できないと記載があり、
今後ユーザがemailを変更した場合、属性のemailとusernameに乖離がでてしまうため
現状usernameには一意となる文字列を指定しています。

※サインアップや認証コードの送信などは問題なくできているので、
IDの記載ミス等問題ではないと思われます。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • mr-hisa-child

    2017/07/07 17:17

    Cognito_HOGE_RoleはIAMで作成したロールですか?そのロールにlistUsersを実行するための、権限は設定されていますでしょうか?

    キャンセル

  • lion_

    2017/07/07 23:15

    返信ありがとうございます! ご指摘の通り、Cognito_HOGE_RoleはIAMで作成したロールでして、listUserを実行する権限を「新しいロールを作成する」ことで付与した「つもり」でいます。 が、それらの設定方法が恐らく間違っているのだと思います。 どこか参考になるサイトでも構いませんのでご教示頂けると助かります。

    キャンセル

回答 1

check解決した方法

0

【自己解決】
こちらは改めてcognitoのプールを再作成し、emailにalias設定して重複不可としました。
ご協力ありがとうございました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.03%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる