基本的にはカスタム認証フローを使って、匿名ユーザには無条件でトークンを払い出すようにする。

準備

  • Define Auth Challengeに当たるLambdaを作成する
  • userStatusがFORCE_CHANGE_PASSWORDの場合に認証突破するような設定にする(ここのコードTODO)
  • Cognito カスタム認証フローの認証チャレンジの定義に上記Lambdaを紐づけておく
    • terraformのlambda_configで設定する場合は、lambda側にpermissionを設定しておく必要がある(マネコンから手で作ると勝手にパーミッションが作られている)

実行

  1. uuidを生成して端末のストレージに保持する。(これを仮に「デバイスID」と呼ぶ
  2. uuidを使ってAdminCreateUserを実行する。
  3. 続いてCUSTOM_AUTHフローでcognitoにログインする
  4. 無事lambdaが起動してログイン成功、トークンが払い出される。

Firebase Authenticationでの匿名ログインならもっと簡単 Firebaseはいいぞ