EC2に構築したWebサーバーにALBを配置して、認証の設定をOneLoginと行うことで、Webサーバーのログイン認証をOneLoginに統合して管理することが可能です。

前提条件
OneLogin側のアカウントの準備やWebサーバーやALB自体の構築がすでにされていることが前提です
OneLogin側の設定
OneLoginの管理画面に移動し"Applications > Application"を開き"Add App"を開きます。

"OIDC"と検索して、"OpenId Connect (OIDC)"を選択します。
"Configuration"タブを開き、以下の2つの項目を設定して、"SAVE"を押します。
- Login Url → ALB に設定しているドメイン
- Redirect URI's → ALBに設定してるドメイン + /oauth2/idpresponse

"SSO"タブを開き"Token Endpoint"を"POST"に設定します。
そして、"Client ID"と"Client Secret"を控えて"SAVE"を押します。
※"Show client secret"を押すことで、"Client Secret"は確認できます。
"Well-known Configuration"を新しいタブで開くと、"JSON"が表示されるので、その内容を控えておきます。

"Access"タブから、利用するユーザーのロールを指定して"SAVE"を押します。

ALBの設定
AWSアカウントにログイン後、"EC2 > ロードバランサー"を開き、該当ALBを選択して、新規でリスナーを追加する場合は"リスナーの追加"、既にあるリスナーを変更する場合は"編集"を押します。
※今回の手順では"リスナーの追加"で行います。

アクションの追加から"認証..."を選択します。

認証を"OIDC"に設定し、該当項目にOneLogin設定時に取得した値を入力して、"✓"を押します。
パラメータは下記の表を参考に入力してください。

| OneLogin側の表示名 | ALB側の表示名 |
| issuer | 発行者 |
| authorization_endpoint | 認証エンドポイント |
| token_endpoint | トークンエンドポイント |
| userinfo_endpoint | ユーザー情報エンドポイント |
| ClientID | クライアントID |
| Secret | クライアントのシークレット |
次に、認証後に転送する設定を行います。"アクションの追加 > 転送先..."を押します。

該当するターゲットグループを選択して"✓"を押します。

最後に証明書の設定を押して"保存"を押します。

動作確認
ALBのドメインにアクセスすると、以下のようにOneLoginにリダイレクトされ、認証が求められるので、認証を行うことで、該当するWebサイトにアクセスが可能になります。
※OneLogin側で多要素認証の設定をしている場合、多要素認証が求められます。
