Laravel+Cognitoでサインイン時にエラー"The security token included in the request is invalid."


事象

Laravel環境にCognitoを使用したサインアップ/サインイン機能を搭載したのですが、新規登録・メール検証済みユーザーでサインインしようとした時に全くもってサインインできませんでした。うんともすんとも動かねえぜ。

前提条件として、Cognitoのアプリクライアントの設定で「認証用の管理 API のユーザー名パスワード認証を有効にする(ALLOW_ADMIN_USER_PASSWORD_AUTH)」を使用した場合でのエラーです。

結論を言うと環境変数に設定していたAWS_ACCES_KEY_IDが間違っていただけなのですが、なんとこのミスに気づかず6時間以上を無駄にしてしまったため、備忘録として残します。

以下、Laravel+Cognito構築で参考にさせて頂いた記事
https://blackbits.io/blog/laravel-authentication-with-aws-cognito
https://qiita.com/suzumurakk/items/efe4543cf0df2cd31659

原因

タイトルにもある通りで、裏では以下のエラーが返ってきていました。

The security token included in the request is invalid.(リクエストに含まれているセキュリティトークンが無効です。)

このエラーでググると、AWSに送信しているアクセスキーIDもしくはシークレットアクセスキーが無効とのことでした。
Laravelの.envを確認したところ、アクセスキーID(AWS_ACCES_KEY_ID)に余計な文字が入っておりました。チクショー!!
上記解決後、無事にサインインできることを確認しました。

反省点

  1. Laravelの認証周り(Guardやプロバイダー)の理解が浅く、原因追求に時間がかかりました。
  2. 真っ先にAWSからのレスポンスを確認すべきでした。次からは必ずそうします!!!

そのうちLaravel+Cognitoを使った認証/メール検証/サインアップの実装記事を書こうと思います。