Shallow Dive by Dozono

Amazon Cognitoのアカウントロック

Posted : 01 May 2020

Amazon Cognitoにおいて多数の認証エラーが発生した際に行われるアカウントロックについて。

やりたいこと

Amazon CognitoとAmplifyを用いたWebアプリケーションにおいて、認証画面でエラー処理を行いたかった。
本稿の内容は、AmplifyのAuth.signInメソッドを使用している。

Amazon Cognitoの振る舞い

ID/パスワードの組み合わせが不正な場合には、以下のエラーレスポンスが返却される。

IDパスワード不正時

複数回の認証エラーが発生すると、以下のエラーレスポンスが返却される。

アカウントロック時

返却されたエラーレスポンスのオブジェクトをconsole.logに出力したものは次の通り。

エラーメッセージの違い
  • ID/パスワードの組み合わせが不正の時
1
2
3
code: "NotAuthorizedException"
message: "Incorrect username or password."
name: "NotAuthorizedException"
  • 複数回の認証エラーが発生した時
1
2
3
code: "NotAuthorizedException"
message: "Password attempts exceeded"
name: "NotAuthorizedException"

実装例

Error Codeは同じ内容となるため、Error Messageを基に処理を変更する必要がある。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
signIn = async function () {
  const self = this
  try {
    await Auth.signIn(self.email, self.password)
    // 認証成功時の処理
  } catch (err) {

    // ID/パスワードの組み合わせが不正の時
    if (err.message === 'Incorrect username or password.') {
        console.log('ログインエラー。入力内容を確認して下さい。')
    }

    // 複数回の認証エラーが発生した時
    if (err.message === 'Password attempts exceeded') {
      console.log('失敗回数が上限を超えました。しばらく時間をおいてから再度お試しください。')
    }
  }
}