2023年3月3日金曜日

Open ID ConnectまたはOAuth2による認証の応答を印刷する

Oracle APEXのアプリケーションの認証スキームとしてOpen ID Connectを使った際に、認証後のプロシージャとして以下のようなコードを書いています。

APEX側ではIdPからの応答であるJSON形式のメッセージをパースした状態(apex_json.parseを呼び出した状態)で、認証後のプロシージャを呼び出しています。そのため、IdPが応答としてどのようなメッセージを返すかが分かっていれば、apex_json.get_varchar2といったファンクションを呼び出すことでIdPから返された値を取得することができます。

IdPがどのような応答をするかはIdPに確認すべきことではあるのですが、とりあえず受信した応答をダンプするファンクションを作成してみました。


アプリケーション・アイテムを作成し(以下の例ではG_USER_INFO)、認証後のプロシージャで値を設定します。


後は静的コンテンツのリージョンに以下のようにソースを記述すると、IdPの応答が画面に出力されます。

<pre>&G_USER_INFO.</pre>


以下のような表示になります。トークンなどは永続的なものではありませんが、センシティブな情報ではあるので、不要になったら認証後のプロシージャからコードは取り除いた方が安全でしょう。


以上になります。

Oracle APEXのアプリケーション作成の参考になれば幸いです。