前回の記事で作成したアプリケーションを使って、REST対応SQLサービスのOAuth2による保護を確認します。
アプリケーションにページを追加し、OAuth2で保護したREST対応SQLサービスを呼び出し、動作を確認します。
REST対応SQLサービスのリクエストを許可するOAuth2クライアントを作成します。
OAuth2クライアントにロールSQL Developerを割り当てます。
以下のスクリプトを実行します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
begin | |
-- REST対応SQLを実行できるクライアントの作成 | |
oauth.create_client( | |
p_name => 'restsqluser' | |
,p_grant_type => 'client_credentials' | |
,p_support_email => 'yuNN@dummy.com' | |
,p_privilege_names => NULL | |
); | |
-- SQL Developerロールの追加 | |
oauth.grant_client_role( | |
p_client_name => 'restsqluser' | |
,p_role_name => 'SQL Developer' | |
); | |
end; |
作成したOAuth2クライアントrestsqluserのCLIENT_IDとCLIENT_SECRETを、ビューUSER_ORDS_CLIENTSから取得します。
select name, client_id, client_secret from user_ords_clients where name = 'restsqluser'
ワークスペース・ユーティリティのWeb資格証明より、作業を行います、
名前はREST Enabled SQL Cred、静的識別子はREST_ENABLED_SQL_CREDとします。
認証タイプはOAuth2クライアント資格証明フロー、クライアントIDまたはユーザー名は列CLIENT_IDの値、クライアント・シークレットまたはパスワードは列CLIENT_SECRETの値を指定します。
作成をクリックします。
続いてREST対応SQLを作成します。
ワークスペース・ユーティリティを開きます。
作成をクリックします。
名前はRemote HR、エンドポイントURLはhttps://から始まりORDSスキーマ別名までの値です。
次へ進みます。
資格証明として、先ほど作成したREST Enabled SQL Credを選択します。ロールとしてSQL Developerが割り当たっているクライアントrestsqluserにて接続されます。
作成をクリックします。
ダイアログが閉じる前に接続確認が行われます。成功するとREST対応SQLサービスが作成されます。
ダイアログを閉じます。
REST対応SQLサービスが作成されました。
作成したREST対応SQLサービスを呼び出すページを作成します。
REST対応SQLサービスでは表の更新も可能なので、フォーム付きの対話モード・レポートを作成します。
ページの作成を開始します。
対話モード・レポートを選択します。
ページ定義では、フォーム・ページを含めるをONにします。
データ・ソースとしてREST対応SQLサービスを選択し、REST対応SQLサービスとしてRemote HRを選択します。ソース・タイプは表、表/ビューの名前としてEMPを選択します。
主キー列1はEMPNO (Number)です。
ページの作成をクリックします。
以上でページの追加は完成です。
ページを実行すると記事の先頭のGIF動画のように動作します。ローカル・データベースの表EMPの操作と、見かけ上の違いはありません。
ページを追加したアプリケーションのエクスポートを以下に置きました。https://github.com/ujnak/apexapps/blob/master/exports/ords-rest-test2.zip
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完