#まとめ
- ALB Authentication + Cognitで認証しようとしたら500エラー
- ALBについているセキュリティグループのアウトバウンドに443ポートがなかった
- 443ポートを許可したらうまく行った
#経緯
ElasticBeanstalkのステージング環境にBasic認証的なことをする必要が出てきて、ebextentionに書いたら、間違えて本番環境にもBasic認証かけそうだな…と思い別の方法を探していました。
で、 https://dev.classmethod.jp/cloud/alb-cognito-user-pool/ を見つけて、これでEmailじゃなくusernameを使えばBasic認証っぽくできるじゃん、と思い実践してみることに。
#まず別のALBで試してみた
いきなりステージングにアクセスできなくなると困るので、別のALBを立てて期待通りに動作するか検証した。→結果うまく行った。
#いざステージングへ適用
Cognitのドメイン設定を変えてステージングのALBに適用
→username/passwordを入力!
→500 Internal server error...
#色々思案
- もともとステージングへはセキュリティグループでアクセスできるIPを制限していたので、それがだめなのか?→認証かかっている状態で0.0.0.0を許可したが変化無し。
- Cogentのドメイン設定ミスったか?→合ってそう
- ...わからん
ググってもいい情報が当たらず、色々設定眺めていた結果、セキュリティグループのアウトバウンドに80ポートしか記述が無いことに気づく。
→ElasticBeanstalkで作成されたALBにはこの記載があるみたいです。ターゲットグループのポートだけってことなんでしょう。
#なぜダメなのか考察
(違ってたらご指摘いただけると嬉しいです)
ALBからCognitの方に認証情報を取得する際のリクエストがhttpsなんだと思いました。
別のALBでうまく行っていたのは、ElasticBeanstalkから作ったわけではなく、セキュリティグループもALBと一緒に作ったので(←これが良くなかった…)アウトバウンドに0.0.0.0がいたんですねー。
#対応
ALBのセキュリティグループに443ポートの0.0.0.0を追加してアクセスしたところ、うまく認証が機能しました。めでたしめでたし。
#あとがき
それにしてもALBってHTTPS転送もできたり、かなり便利になりましたね。とても助かります。