🔑

Amplify-UI + Amazon Cognito UserPoolで認証基盤を作ったときのデフォルト外部仕様まとめ

2022/08/08に公開

これは何?

Amazon Cognito UserPool + Amplify-UIでサクッと認証基盤が作れそうだった。
仕事で使うとなると非エンジニアに外部仕様を共有する必要あるが、いい感じにまとまった資料がなかった。ので作った。
誤りや「これもあったほうがいい」という部分があったらコメントください✋

ユーザのパスワードポリシー

パスワードの最小文字数

  • デフォルト: 8文字
  • 6~99文字に変更可能

パスワードの最大文字数

  • デフォルト: 256文字
  • 変更不可

パスワード要件

  • 以下の全てに合致するもの
    • 少なくとも1つの数字を含む
    • 少なくとも1つの特殊文字 (^ $ * . [ ] { } ( ) ? - " ! @ # % & / \ , > < ' : ; | _ ~ ` + =) を含む
    • 少なくとも 1 つの大文字を含む
    • 少なくとも 1 つの小文字を含む
  • 上記の制限を緩めることはできる
  • それ以外の制約の追加はできない
    • ex)同一のパスワードへの変更、使用不可能な文字の設定など

各種有効期限

エンドユーザのセッションの有効期限

refresh token(更新トークン)の有効時間が該当する

  • デフォルト: 30日
  • 60分 ~ 10年に変更可能

初期パスワードの有効期限

管理者からユーザアカウントを発行したときに設定されるパスワードこと

  • デフォルト: 7日
  • 0 ~ 365日に変更可能

パスワードリセットコードの有効期限

パスワードをリセットする際に発行される6桁の数値のこと

  • デフォルト: 1時間
  • 変更不可

多要素認証(MFA)コードの有効期間

  • デフォルト: 3分
  • 変更不可

アカウント保護

※以下、「高度なセキュリティ」を「フル機能」有効にした場合のデフォルトについて記述する

アカウントロック(アダプティブ認証)

  • 5回以上認証に失敗するとアカウントロックがかかる
  • 厳密なロックの仕様については公開されていない
  • iPhoneのロックのように、間違えた入力が続くとロック時間が指数関数的に伸びる仕組み
    • 最短1秒、上限は15分

漏洩対策(漏洩が疑われる認証情報)

  • 漏洩済みのパスワードを使いまわし設定した or 他のサイトで使いまわしたパスワードが漏洩した場合、サインインをブロックすることができる
  • 漏洩した認証情報の管理者は不明
    • awsが管理しているリストなんだろうか

アカウントごとの認証ログ

2年間、ユーザごとにcognito上に保持され、認証の成功 / 失敗の記録が閲覧できる

参考資料

Discussion