Microsoft OneDrive上のファイルの一覧、ファイルのアップロード、削除といった作業を行うAPEXアプリケーションを作成します。
作成したアプリケーションは以下のように動作します。実用的とはいえませんが、ファイルやフォルダの一覧表示、作成、更新、削除といったOneDriveの基本的な操作を行うGraph APIの呼び出しは実装しています。
https://github.com/ujnak/apexapps/blob/master/exports/onedrive-operation.zip
サイド・メニューのアプリの登録を開きます。
左のメニューよりAPIのアクセス許可を開き、アクセス許可の追加を実行します。
Microsoft 365 Personalのサブスクリプションを契約していることが前提です。Microsoft 365の中では家庭向けの一番安価なサブスクリプションなので、より多くの機能を含むその他のサブスクリプションでも同様に作業ができるでしょう。Microsoft 365のサブスクリプションには1ユーザーあたり1TBのクラウド・ストレージが含まれています。
作成するAPEXアプリケーションは、Azure Active DirectoryをIdPとしてOpen ID Connect(OIDC)でユーザー認証します。ユーザー認証時に取得したアクセス・トークンを使って、Microsoft Graph APIを呼び出します。結果として、APEXアプリにサインインしたユーザーによりOneDriveを操作します。
本記事ではMicrosoft Azure Active Directory側の作業として、アプリケーションを登録します。
Microsoft Azureのポータルより、Azure Active Directoryを開きます。
追加からアプリの登録を実行して、アプリの新規登録を開始することもできます。
新しいクライアント シークレットを作成します。
アプリの登録の画面を開きます。登録済みのアプリケーションが一覧されます。
新規登録を実行します。
アプリケーションの名前は任意です。今回はAPEX App for OneDriveとしています。名前は後でも変更できます。
サポートされているアカウントの種類はAzure Active Directoryの契約状況に依存すると思いますが、個人向けMicrosoftアカウントのみでは機能しませんでした。今回は個人向けのMicrosoft 365の契約ユーザーにて認証させるため、任意の組織ディレクトリ内のアカウント(任意のAzure ADディレクトリ - マルチテナント)と個人のMicrosoftアカウント(Skype, Xboxなど)を選んでいます。
リダイレクトURIは、Oracle APEX側で認証応答を受け付けるURIです。APEXのサーバーのベース・パスにapex_authentication.callbackを付加したURIになります。省略可能となっていますが、APEXの認証では必須です。Autonomous DatabaseのAPEXの場合は、以下のようなパスになります。
https://<ADBのID>-<インスタン名>.adb.<リージョン名>.oraclecloudapps.com/ords/apex_authentication.callback
以上を設定し、登録を実行します。
アプリケーションが作成されます。
アプリケーション(クライアント)IDの情報をOracle APEX側のWeb資格証明のクライアントIDとして登録するので、コピーしておきます。
左のメニューより証明書とシークレットを開きます。
証明とシークレットの画面が開きます。
説明として任意の文字列を入力します。今回は、APEXのWeb資格証明をMS_AZURE_ADとして作成する予定なので、APEX Web Credential MS_AZURE_ADと入力しました。
有効期限は推奨の180 days (6 months)とします。
追加を実行します。
クライアント シークレットが生成されます。
値の方がクライアント シークレットです。APEXのWeb資格証明に設定するため、必ずコピーをしておきます。
OneDriveの操作に使用するMicrosoft Graph APIに必要なアクセス許可を選びます。
アクセス許可が更新されます。
画面右にドロワーが開きます。
アプリケーションに必要なアクセス許可の種類として、委任されたアクセス許可を選択します。
最初にOpenIdアクセス許可のemail、offline_access、openid、profileにチェックを入れます。正直なところ、今回の用途でこれらの許可がすべて必要なのか確信が持てないため、権限を与えすぎているかもしれません。
アクセス許可を選択するにFilesと入力します。
OneDriveへのアクセス許可はFilesで始まります。リストされたアクセス許可のFiles.ReadWriteにチェックを入れます。APEXアプリケーションにサインインしたユーザーが所有しているファイルの操作のみを許可します。
アクセス許可の更新をクリックします。