[OCI]Autonomous Database上のAPEXアプリケーションにAzure AD認証を設定してみた

# はじめに
Autonomous Daatabaseをデプロイすると、Oracle Application Exporess（Oracle APEX）というローコードWebアプリケーション開発プラットフォームの開発/実行環境がすぐに使える状態で提供されます。

今回は、APEXで開発したアプリケーションのユーザ認証をAzure ADで行う設定を検証してみました。

# 1. APEXアプリケーションの作成
**＜APEX＞**
APEXのワークスペースにサインインします。
![スクリーンショット 2022-10-04 19.07.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/0153f542-80d4-1675-a194-d62a9778b6b4.png)

「アプリケーション・ビルダー」をクリックします。
![スクリーンショット 2022-10-04 19.08.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/ade09138-be24-b90d-e51d-a9e3664c9e1f.png)

「作成」をクリックします。
![スクリーンショット 2022-10-04 19.09.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/b1fd9458-9550-4938-4437-91193318d2ff.png)

「新規アプリケーション」をクリックします。
![スクリーンショット 2022-10-04 19.11.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/cc636e5d-2fd2-9c31-2d3e-f49fc9d69487.png)

名前に任意のアプリケーション名（ここでは「MY_APEX_APP」）を入力し、「アプリケーションの作成」をクリックします。
![スクリーンショット 2022-10-04 19.13.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/a7df31e9-0dc7-155b-bc35-7bbc30441b66.png)

「アプリケーションの実行」をクリックします。
![スクリーンショット 2022-10-04 19.15.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/719a6e0f-d8e0-5fa6-c4cc-6cc0304e61c9.png)

作成したAPEXアプリケーションのサインイン画面が表示されるので、APEXのベースURLをコピーしてメモしておきます。
![スクリーンショット 2022-10-04 19.16.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/687c4ab2-932f-d599-51d5-50ee667dd6ec.png)
ベースURLは以下のような文字列になります。
`https://xxx.yyy.zzz.oraclecloudapps.com/ords/`
`https://xxx.yyy.zzz.oraclecloud.com/ords/`

# 2. Azure ADへのアプリケーションの登録

**＜Azure＞**
Azureポータルにアクセスし、「Azure Active Directory」に移動します。
![スクリーンショット 2022-10-04 19.23.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/04471bc7-1aa6-604a-ff9d-ee7d9baccd9c.png)

「アプリの登録」に移動します。
![スクリーンショット 2022-10-04 19.29.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/e8ab933e-bb8c-e9d7-00c9-f9a95a163d58.png)

「新規登録」をクリックします。
![スクリーンショット 2022-10-04 19.33.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/164c3206-ce2a-a927-7e2d-af88a7a90181.png)

「アプリケーションの登録」ウィザードが表示されます
![スクリーンショット 2022-10-04 19.39.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/3ca32659-6a5f-dea9-9810-473bdb7a5820.png)

・名前：任意のアプリケーション名（ここでは「MY_APEX_APP」）
・サポートされているアカウントの種類：
　この組織ディレクトリのみに含まれるアカウント (Default Directory のみ - シングル テナント)
・リダイレクトURI
　プラットフォームの選択：Web
　URI：APEXのベースURLの後ろに**apex_authentication.callback**を追加した文字列
　以下のような形になります。
　https://.......oraclecloud.com/ords/**apex_authentication.callback**
上記を入力し、「登録」をクリックします。

アプリが登録されました。
![スクリーンショット 2022-10-04 19.46.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/375907ae-f0d5-1cc6-d1c0-7cd0303b9374.png)

「アプリケーション ID URIの追加」をクリックします。
![スクリーンショット 2022-10-04 19.46.37のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/3a782756-ccbc-5a8c-e245-4919880ed5ea.png)

「設定」をクリックします。
![スクリーンショット 2022-10-04 20.38.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/c83f6509-a8a9-515b-8f59-ce9004876a9c.png)

「保存」をクリックします。
![スクリーンショット 2022-10-04 20.39.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/79df7f1c-8eca-098b-c4d1-c256f9b9b332.png)

アプリケーションIDのURIが設定されました。
![スクリーンショット 2022-10-04 20.40.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/8d97fa7b-7fcb-d9fa-5854-d9cfa4d4694f.png)


# 3. Azure ADユーザへのアプリケーションアクセスの許可
**＜Azure＞**
Azure ADの「エンタープライズアプリケーション」に移動します。
![スクリーンショット 2022-10-04 20.43.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/18545e2a-eecd-b9c6-e8b1-f39c7220ca77.png)

2.で登録したアプリケーションの名前（ここでは「MY_APEX_APP」）をクリックします。
![スクリーンショット 2022-10-04 20.47.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/5d1fdbb6-2832-2d20-d4b2-3765c521629f.png)

「ユーザーとグループ」に移動します。
![スクリーンショット 2022-10-04 20.51.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/82bf3cc0-7873-92a2-26b4-65dc8092e21c.png)

「ユーザーまたはグループの追加」をクリックします。
![スクリーンショット 2022-10-04 20.53.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/f9e9559b-b1f8-e025-73f2-674ccb152046.png)

「選択されていません」をクリックします。
![スクリーンショット 2022-10-04 20.54.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/5b9c0982-42fa-70b3-5873-7cc1d9314186.png)

アプリケーションへのアクセスを許可するユーザ、グループを選択し、「選択」をクリックします。


「割り当て」をクリックします。
![スクリーンショット 2022-10-04 21.00.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/8c0d8d17-1cb7-3fd5-2ae1-934bc7f124f4.png)

アプリケーションにユーザが割り当てられました。
![スクリーンショット 2022-10-04 21.01.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/d04ddaa4-b89b-06b4-d832-ef4d3e0f4336.png)


# 4. クライアントシークレットの作成
**＜Azure＞**
Azure ADの「アプリの登録」に移動します。
![スクリーンショット 2022-10-04 21.04.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/25b13df1-5088-1ba6-836f-5537ea91ea57.png)

登録したアプリケーションの名前（ここでは「MY_APEX_APP」）をクリックします。
![スクリーンショット 2022-10-04 21.07.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/3e1617f2-8f85-1010-6795-5f48f430fc47.png)

「アプリケーション（クライアント）ID」の値をコピーしてメモしておきます。
![スクリーンショット 2022-10-04 21.10.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/36343172-8ccc-cdeb-45f2-199290bc9387.png)

「証明書とシークレット」に移動します。
「![スクリーンショット 2022-10-04 21.15.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/6bbf4aef-3d3d-de25-a13d-f186e89bcf03.png)

新しいクライアントシークレット」をクリックします。
![スクリーンショット 2022-10-04 21.17.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/556f6360-3f95-9baf-e155-68979b51801e.png)

クライアントシークレットの追加のウィザードが表示されます。
![スクリーンショット 2022-10-04 21.18.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/dc7f8644-c8f1-be6e-a1b3-0a7279c8e33d.png)

説明：任意（ここでは「Client Secret for MY_APEX_APP」）
有効期限：任意（推奨：6ヶ月）
上記を入力して、「追加」をクリックします。

クライアントシークレットの値をコピーしてメモしておきます。
![スクリーンショット 2022-10-04 21.22.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/89b63266-5d18-0eb1-b677-295561fd0906.png)

# 5. APEXアプリケーションにWebクレデンシャルを追加
**＜APEX＞**
アプリケーションの「共有コンポーネント」をクリックします。
![スクリーンショット 2022-10-04 21.26.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/b3c8ee82-5abd-d3c6-e95a-d2ad3c1ff984.png)

検索窓をクリックします。
![スクリーンショット 2022-10-04 21.30.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/93127db4-1e83-b136-7fd7-91f83cfff8dd.png)

検索条件に「Web credentials」と入力し、表示された「Create Web Credentials」をクリックします。
![スクリーンショット 2022-10-04 21.31.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/103e1fb2-858e-8f91-5456-3604e0f1a74b.png)

Web資格証明
![スクリーンショット 2022-10-04 21.33.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/f08858f6-08e1-48b0-2daa-2b50a0030176.png)

名前：任意の名前（ここでは「Azure AD」）
クライアントIDまたはユーザー名：先ほどメモした「アプリケーション（クライアント）ID」の値
クライアント・シークレットまたはパスワード：先ほどメモした「クライアントシークレット」の値
クライアント・シークレットまたはパスワードの確認：先ほどメモした「クライアントシークレット」の値
上記を入力したら、「作成」をクリックします。

Web資格証明「Azure AD」が作成されました。
![スクリーンショット 2022-10-04 21.38.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/b3108610-9cf5-3893-0b0e-c10487dd44d6.png)

# 6. 「OpenID Connect メタデータ ドキュメント」のエンドポイントの取得
**＜Azure＞**
Azure ADの「アプリの登録」に移動し、登録したアプリケーションの名前をクリックします。
![スクリーンショット 2022-10-04 21.46.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/f3823b80-ea9d-6f02-36eb-73577db3f24e.png)

「エンドポイント」をクリックします。
![スクリーンショット 2022-10-04 21.47.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/5b123454-5cf3-6cab-1532-7b2026579aaf.png)

「OpenID Connect メタデータ ドキュメント」のエンドポイントをコピーしてメモしておきます。
![スクリーンショット 2022-10-04 21.49.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/22cfc4c5-808b-4645-0de5-85fa1a88e4f9.png)
※「OpenID Connect メタデータ ドキュメント」のエンドポイントは、以下のような文字列です。
`https://login.microsoftonline.com/xxxxxxxxxxxxxxxx/v2.0/.well-known/openid-configuration`

右上の「✖️」をクリックします。

# 7. APEXアプリケーションでAzure ADによる認証を有効化
**＜APEX＞**
アプリケーションの「共有コンポーネント」をクリックします。
![スクリーンショット 2022-10-04 21.54.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/3863d96a-4f1b-68eb-c279-0faa0ed880d7.png)

セキュリティ欄の「認証スキーム」をクリックします。
![スクリーンショット 2022-10-04 21.55.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/b62918ef-ff4c-b79d-f9b6-3ee6feb58371.png)

「作成」をクリックします。
![スクリーンショット 2022-10-04 21.56.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/6af0c114-8b55-86db-1768-7800f102781b.png)

そのまま「次」をクリックします。
![スクリーンショット 2022-10-04 21.57.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/98345a65-1b38-c8fb-4dcf-fae8ffba9cd2.png)

認証スキームの作成ウィザードが表示されます。
![スクリーンショット 2022-10-04 22.02.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/6bb3afbb-ec2c-5d1d-19de-f565ba3d7727.png)
名前：任意の認証スキーム名（ここでは「Azure AD Scheme」）
スキーム・タイプ：ソーシャル・サインイン
資格証明ストア：先ほど作成したWeb資格証明（ここでは「Azure AD」）を選択
認証プロバイダ：OpenID Connectプロバイダ
検出用URL：先ほどメモした「OpenID Connect メタデータ ドキュメント」のエンドポイント
有効範囲：profile,email,offline_access
ユーザ名：preferred_username
上記を入力したら、「認証スキームの作成」をクリックします。

認証スキーム「Azure AD Scheme」が作成され、認証スキームとしてアクティブ化されました。
![スクリーンショット 2022-10-04 22.06.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/0e2d9e4f-6437-79d2-a3e4-995c52730a48.png)

# 8 .動作確認
**＜APEX＞**
アプリケーション「MY_APEX_APP」の開発画面のトップに移動し、「アプリケーションの実行」をクリックします。
![スクリーンショット 2022-10-04 22.11.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/3f047476-7350-d5ba-9328-9e724675b2e3.png)

Azure ADのサインイン画面にリダイレクトされるので、Azure ADユーザのユーザ名を入力します。
（初回はAzure ADのアクセス許可の確認画面が表示されます。）
![スクリーンショット 2022-10-04 22.15.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/1ad371b8-946e-d646-987c-0966812a65e8.png)

Azure ADユーザのパスワードを入力します。
![スクリーンショット 2022-10-04 22.17.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/89603c17-f187-c1a3-7d64-644dac141a69.png)

APEXアプリケーション「MY_APEX_APP」のホーム画面が表示されました。
![スクリーンショット 2022-10-04 22.20.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/6bda249c-97ca-0376-36a4-3e086227980e.png)

Azure ADのユーザを使用して、APEXアプリケーションにサインインできることが確認できました。

以上で、Autonomous Database上のAPEXアプリケーションにAzure AD認証を設定することができました。