パッケージORDS_PARのリファレンスはこちらになります。
簡単なAPEXアプリケーションを作成し、動作を確認してみました。REVOKE_PARの呼び出しについてはリファレンスに記載されているように、呼び出した後にすぐPARが無効化されるわけではないようです。
REVOKE_PAR
function revokes an existing PAR in the current schema. It may take up to 30 seconds for the changes to take effect.
以下よりPARの確認作業について紹介します。
最初に作成したPARを保存する表を作成します。おそらくセキュリティ上の配慮と思われますが、過去に生成されたPARを確認する方法がありません。そのため、生成したPARを記録する必要がある場合は、個別に実装が必要です。今回は生成したPARを保存する表として、表EBAJ_PAR_URLSを作成します。
以下のクイックSQLのモデルから、表EBAJ_PAR_URLSを作成します。
# prefix: ebaj
par_urls /auditcols
token vc400 /nn
alias vc400 /nn
uri vc400 /nn
duration num /nn
is_revoked vc1
クイックSQLからレビューおよび実行を行い、表EBAJ_PAR_URLSを作成します。
SQLワークショップのRESTfulサービスを開き、事前承認リクエストを生成する対象にするRESTサービスを作成します。
ORDSにスキーマを登録します。
ORDSスキーマ属性のRESTfulアクセスの有効化をオンにします。今回の確認作業にサンプル・サービスを使用するので、サンプル・サービスのインストールをオンにします。
スキーマ属性の保存をクリックします。
左ペインにモジュールとしてoracle.example.hrが現れます。これはサンプルとしてインストールされたモジュールで、後ほどこのモジュール名を指定してPARを生成します。
パッケージORDS_PARが利用できるのはORDS 24.4以降です。ORDSバージョンが24.4以降であることを、画面上の表示から確認します。
今回は、URIテンプレート(DEFINE_FOR_HANDLERの引数としてはp_pattern)がemployees/、メソッド(DEFINE_FOR_HANDLERの引数としてはp_method)がGETのRESTサービスをPARの作成対象とします。
完全なURLをコピーし、ブラウザからアクセスします。
JSONドキュメントとして、表EMPの内容を取得できます。今のところRESTサービスは保護されていません。
RESTサービスを保護します。
左ペインの権限を選択し、右ペインに開いた権限の一覧より権限の作成をクリックします。
作成する権限の名前とタイトルをoracle.example.hrとし、保護されたモジュールとしてoracle.example.hrを選択します。ユーザー認証によるアクセスは許可しないので、ロールは割り当てません。
以上で、権限の作成をクリックします。
左ペインの権限に、新たに追加されたoracle.example.hrが現れます。これでモジュールoracle.example.hrが(あらゆるリクエストから)保護されました。
先ほど確認した完全なURLでアクセスすると、Unauthorizedが返されます。
名前はSample PAR requestsとします。空のアプリケーションを作成し、確認に使う機能はホーム・ページに実装します。
ページ・アイテムP1_TOKENにDEFINE_FOR_HANDLERを呼び出したときに生成されるトークンの値を保持します。このページ・アイテムに設定されているトークンを、ボタンREVOKE_PARをクリックしたときに実行されるREVOKE_PARの引数として与えます。
ページ・アイテムP1_URLに、プロトコル名で始まる完全なPAR URLを保存します。完全なPAR URLは、ボタンGENERATE_PARをクリックして実行されるプロセスで生成します。
ページ・アイテムP1_DURATIONには、PARの有効期間を秒で指定します。
表EBAJ_PAR_URLSを表示する対話モード・レポートを作成します。ソースの表名としてEBAJ_PAR_URLSを指定します。
ボタンGENERATE_PARをクリックしたときに実行されるプロセスを作成します。ソースのPL/SQLコードとして、PARを生成するコードを記述します。
ボタンREVOKE_PARをクリックしたときに実行されるプロセスを作成します。ソースのPL/SQLコードして、PARを無効化するコードを記述します。
以上でアプリケーションは完成です。
今回作成したAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/sample-ords-par-requests.zip
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完