Auth0とALB認証機能をOIDCで連携して認証機能を実装してみた

2021.11.30

こんにちは、コンサル部@大阪オフィスの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から必要情報取得

Auth0からALBの認証に必要な情報を取得します。
必要な情報はアプリケーション設定内のSettingsに表示される情報をメモに残します。

Auth0側の項目 ALB側で利用する項目
Domain 発行者
認証エンドポイント
トークンエンドポイント
ユーザー情報エンドポイント
Client ID クライアントID
Client Secret クライアントのシークレット

上記でAuth0の操作は終了になります。

ALBの認証設定

AWSマネージメントコンソールにログインをおこないサービスメニューから[EC2] > [ロードバランサー]を選択します。
対象のALBを選択して[リスナー]から443ポートの[ルールの表示/編集]をクリックします。

ALBの認証設定1

ルールの設定では認証を追加する必要がございますので、編集をクリックしてHTTPS 443: デフォルトアクションを変更します。

ALBの認証設定2

アクションの追加から[認証]を選択して下記設定をおこないます。
設定内容はAuth0で取得した内容を利用します。

ALBの認証設定3

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の認証設定4

動作の確認

実際に動作検証をしてみます。
ALBの環境にアクセスするとAuth0の認証画面が表示されます。

動作の確認1

ログイン対応をおこなうとEC2のWebサイトが表示される事を確認します。

動作の確認2

さいごに

Auth0とALB認証機能をOIDCで連携して認証機能を実装してみました。
上記はプログラムを組むことなくAuth0の認証機能がご利用いただけます。
少しでもお客様の作りたい物の参考になればと考えております。