7.2 CALLBACKプロシージャ
このプロシージャは、外部ログイン・ページのランディング・リソースです。このプロシージャのコールは、ブラウザから直接行います。
構文
APEX_AUTHENTICATION.CALLBACK (
p_session_id IN NUMBER,
p_app_id IN NUMBER,
p_page_id IN NUMBER DEFAULT NULL,
p_ajax_identifier IN VARCHAR2,
p_x01 IN VARCHAR2 DEFAULT NULL,
p_x02 IN VARCHAR2 DEFAULT NULL,
p_x03 IN VARCHAR2 DEFAULT NULL,
p_x04 IN VARCHAR2 DEFAULT NULL,
p_x05 IN VARCHAR2 DEFAULT NULL,
p_x06 IN VARCHAR2 DEFAULT NULL,
p_x07 IN VARCHAR2 DEFAULT NULL,
p_x08 IN VARCHAR2 DEFAULT NULL,
p_x09 IN VARCHAR2 DEFAULT NULL,
p_x10 IN VARCHAR2 DEFAULT NULL );
パラメータ
表7-1 CALLBACKプロシージャのパラメータ
パラメータ | 説明 |
---|---|
p_session_id |
Oracle APEXセッション識別子。 |
p_app_id |
データベース・アプリケーション識別子。 |
p_page_id |
(オプション)ページ識別子。 |
p_ajax_identifier |
システム生成のAjax識別子。「GET_AJAX_IDENTIFIERファンクション」を参照してください。 |
p_x01 から p_x10 |
(オプション)外部ログインによって認証プラグインに渡されるパラメータ。 |
例1
この例では、外部ログイン・ページにリダイレクトが行われ、認証成功後の外部ログインのリダイレクト先となるAPEXにコールバックが渡されます。
DECLARE
l_callback varchar2(4000) := apex_application.get_callback_url;
BEGIN
sys.owa_util.redirect_url(
'https://single-signon.example.com/my_custom_sso.login?p_on_success='||
sys.utl_url.escape (
url => l_callback,
escape_reserved_chars => true );
apex_application.stop_apex_engine;
END;
例2
この例では、外部ログイン・ページの共有表にユーザー・データを保存し、データへのハンドルを使用してコールバックを実行します。APEXでは、コールバックによって認証プラグインのAJAXコードがアクティブ化されます。これは、値x01
を取ることができ、共有表から実際のユーザー・データをフェッチできます。
---- create or replace package body my_custom_sso as
PROCEDURE LOGIN (
p_on_success in varchar2 )
IS
l_login_id varchar2(32);
BEGIN
l_login_id := rawtohex(sys.dbms_crypto.random(32));
insert into login_data(id, username) values (l_login_id, 'JOE USER');
sys.owa_util.redirect_url (
p_on_success||'&p_x01='||l_login_id );
END;
---- end my_custom_sso;
親トピック: APEX_AUTHENTICATION