Auth0とALB認証機能をOIDCで連携して認証機能を実装してみた
こんにちは、コンサル部@大阪オフィスのTodaです。
Auth0を利用して認証を実装する方法の1つとしてALBとOIDCで連携をして実装する方法がございます。 過去記事でGoogle認証やOkta、OneLoginと連携する記事がございますので今回はAuth0を利用する方法を試してみます。
■ Google認証【新機能】AWS ELBのApplication Load Balancer(ALB)の認証機能でWebアプリにGoogle認証を追加する
https://dev.classmethod.jp/articles/add-google-authenticate-your-webapp-on-alb/
■ OktaとALB認証機能をOIDCで連携して認証機能がないアプリケーションに認証機能を追加してみた[n8n実装]
https://dev.classmethod.jp/articles/built-in-authentication-in-alb-with-okta/
■ OneLogin(OIDC)でALB認証機能を使ってみた
https://dev.classmethod.jp/articles/onelogin-oidc-alb-auth/
前提条件
AWSとAuth0の環境が用意されている状態から設定します。
AWS環境にはALBとEC2を1台ずつ配置をおこないSSLによるWebページが表示できる状態から開始します。
試してみる
Auth0のアプリケーション設定
Auth0の管理画面にログインをおこない左メニューから[Applications] > [Applications]を選択して対象のアプリ設定を表示します。
設定内のApplication URIs > Allowed Callback URLsに移動先のURLを指定します。
ALBではCallback先として「https://<ALBに設定するドメイン>/oauth2/idpresponse」を指定する必要がございます。
複数指定する場合はカンマ(,)で区切って入力します。
移動先が複数ある場合はワイルドカード(*)による指定も可能です。
設定後、保存をします。
入力例
https ://example.com/oauth2/idpresponse
Auth0から必要情報取得
Auth0からALBの認証に必要な情報を取得します。
必要な情報はアプリケーション設定内のSettingsに表示される情報をメモに残します。
Auth0側の項目 | ALB側で利用する項目 |
---|---|
Domain | 発行者 認証エンドポイント トークンエンドポイント ユーザー情報エンドポイント |
Client ID | クライアントID |
Client Secret | クライアントのシークレット |
上記でAuth0の操作は終了になります。
ALBの認証設定
AWSマネージメントコンソールにログインをおこないサービスメニューから[EC2] > [ロードバランサー]を選択します。
対象のALBを選択して[リスナー]から443ポートの[ルールの表示/編集]をクリックします。
ルールの設定では認証を追加する必要がございますので、編集をクリックしてHTTPS 443: デフォルトアクションを変更します。
アクションの追加から[認証]を選択して下記設定をおこないます。
設定内容はAuth0で取得した内容を利用します。
ALBの設定項目 | 入力内容 |
---|---|
認証 | OIDC |
発行者 | https://[Auth0 Domain]/ |
認証エンドポイント | https://[Auth0 Domain]/authorize |
トークンエンドポイント | https://[Auth0 Domain]/oauth/token |
ユーザー情報エンドポイント | https://[Auth0 Domain]/userinfo |
クライアント ID | Auth0 Client ID |
クライアントのシークレット | Auth0 Client Secret |
入力が完了したら保存をおこない、ページ上部の[更新]ボタンをクリックします。
上記で設定操作は完了になります。
動作の確認
実際に動作検証をしてみます。
ALBの環境にアクセスするとAuth0の認証画面が表示されます。
ログイン対応をおこなうとEC2のWebサイトが表示される事を確認します。
さいごに
Auth0とALB認証機能をOIDCで連携して認証機能を実装してみました。
上記はプログラムを組むことなくAuth0の認証機能がご利用いただけます。
少しでもお客様の作りたい物の参考になればと考えております。