茹でガエルなエンジニアの記録

やったことや考えたことなどを不定期に書き残していきます

ALBの設定でAuth0でOIDCでクライアント認証をやってみたのでメモ

はじめに

AWSのALB(Application Load Balancer)にOIDCによる認証を設定しました。

認証を追加することで、ALB(の後ろにいるWebアプリ)へのリクエストがあった際、不特定多数のリクエストをWebアプリ側に到達させることなく、ALB側で拒否することができます。 特定の人にしか使わせない想定のアプリの場合、IPで制限するなどの手段もありますが、IP以外の方法でフィルタすることができますので、より使いやすいです。 アクセス制限には以下のようないくつかのやり方があると思います。

  1. 接続元IPアドレスを制限する方法
  2. クライアント証明書による認証をする
  3. OIDCなどによるクライアント認証

今回は一番最後のアプローチを採用しました。ALBでは1か3のやり方ができますが、IPによる制限はリモートワーク環境では使いづらいためです。

また、OIDCのIdPとしてAuth0を使ったのですが、ALB側の設定項目がAuth0の場合は何を設定すれば良いのか少し分かりづらかったのでメモを残しておきます。

設定内容

ALBのリスナー設定画面

f:id:jiig999:20210805184856p:plain
リスナーの認証設定

発行者

https:// + Auth0のDomainの値をつなげて、https://xxxxx.jp.auth0.com/形式にする

最後に/をつけるのを忘れないこと。私はこれをつけ忘れて一日ハマりました。。。

認証エンドポイント(認可エンドポイント)

https://<YOUR_AUTH0_DOMAIN>/authorize

トークンエンドポイント

https://<YOUR_AUTH0_DOMAIN>/oauth/token

ユーザー情報エンドポイント

https://<YOUR_AUTH0_DOMAIN>/userinfo

クライアントID

 ・Auth0でApplicationを作成すると生成されるClient IDの値

クライアントのシークレット

 ・Auth0でApplicationを作成すると生成されるClient Secretの値

これでOKです。

感想

いい感じです。 Webアプリのセキュリティを確保する上で、そもそもWebアプリまで到達できるユーザーは絞っておきたいです。
ログイン認証を強固にすることももちろん大切ですが、それだけではセルフマネージなサーバーに対してログイン試行はできてしまうので、アクセス負荷がかかります。 できるだけ、AWSマネージな仕組みでアクセスをフィルタリングできたほうが楽ですよね。