2023年1月19日木曜日

Microsoft OneDriveを操作するAPEXアプリの作成(2) - APEXアプリの作成

 OneDriveを操作するAPEXアプリケーションを作成します。最初にWeb資格証明を作成し、作成したWeb資格証明を使ってユーザー認証を行うAPEXアプリケーションを作成します。

作成したAPEXアプリケーションにOneDriveを操作する機能を追加していきます。

本記事では、機能を実装する雛形となるAPEXアプリケーションの作成までを実施します。

APEXアプリケーションの作成に、Always FreeのAutonomous Databaseを使用します。

最初にWeb資格証明を作成します。

アプリケーション・ビルダーよりワークスペース・ユーティリティを開きます。


ワークスペース・ユーティリティからWeb資格証明を開きます。


登録済みのWeb資格証明が一覧されます。

作成を実行します。


名前任意です。今回はMS Azure AD Cred for OneDriveとしました。静的識別子(これはGraph APIを呼び出すapex_web_service.make_rest_requestコールの引数p_credential_static_idに指定します)はMS_AZURE_ADとしています。

認証タイプとしてOAuth2クライアント資格証明フローを選択します。日本語だと分かり難いですが、OAuth2.0のClient Credentials Grantとして定義されているフローを指しています。

クライアントIDまたはユーザー名としてAzure ADに登録したアプリのアプリケーションIDクライアント・シークレットまたはパスワードとして、アプリに作成したシークレットの値を入力します。

以上の値を設定し、作成をクリックします。


新しくWeb資格証明が作成されました。


アプリケーション・ビルダーに戻り、アプリケーション作成ウィザードを起動します。空のアプリケーションを作成します。

名前OneDrive操作とします。

アプリケーションの作成をクリックします。


アプリケーションが作成されたら、Azure ADを使うように認証スキームを構成します。

共有コンポーネントを開きます。


認証スキームを開きます。


登録済みの認証スキームが一覧されます。

作成をクリックします。


スキームの作成としてギャラリからの事前構成済みスキームに基づくを選択します。

に進みます。


認証スキームとして、名前MS Azure ADスキーム・タイプとしてソーシャル・サインインを選択します。

資格証明ストアとして先ほど登録したMS Azure AD Cred for OneDriveを選択します。認証プロバイダにはOpenID Connectプロバイダを選択します。

Azure ADのOpen ID Connect検出URLは以下になります。めったに変更されないとは思いますが、Microsoft Azure ADの公式な資料の確認もお願いします。

https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration

有効範囲として以下を指定します。認証プロバイダにOpenID Connectプロバイダを選択している場合は、openidは自動的に追加されます。

User.Read,Files.ReadWrite,profile,offline_access,email

ユーザー名emailを使います。email以外でも、例えばsubといったのを選ぶ方が、アプリケーションによっては望ましいケースもあるでしょう。ユーザー名の大文字への変換はいにしておきます。通常、Oracle APEXのアプリケーションでは、標準の置換文字列APP_USERが大文字で返されることを想定していることが多いためです。

その他はデフォルトのままで、認証スキームの作成を実行します。


新たに認証スキームが作成され、カレントになります。


この状態でアプリケーションの実行をします。


サインインまでのステップは、それぞれの方がMicrosoftとどのように契約しているか、および、ユーザー認証の方法として何を選択しているかで変わるのではないかと思います。

有効範囲(スコープ)として設定した操作を行う許可を求められたら、はいをクリックします。一旦割り与えた操作の許可は、画面の説明にあるようにhttps://microsoft.com/consentにアクセスすることで変更できます。


サインインが始まり、アカウントを聞かれたので、個人で契約しているアカウントのメール・アドレスを指定しました。


私はMicrosoftのAuthenticatorを使っているので、開いた画面で通知の送信をクリックしました。


Microsoft Authenticatorの確認を要求されたので、スマホで確認しました。


サインインの状態を維持しますか?と聞かれたので、はいをクリックしました。


以上でサインインが完了し、アプリケーションのホーム・ページが表示されました。

ナビゲーション・バーの右端に、サインインに使ったメール・アドレスが表示されます。この値が置換文字列APP_USERに(大文字で)設定されています。


以上で、OneDriveの操作を実装するAPEXアプリケーションの雛形が作成できました。

次の記事よりAPEXアプリケーションに、Microsoft Graph APIを呼び出しOneDriveを操作する機能を追加していきます。

続く