このプロシージャは、外部ログイン・ページのランディング・リソースです。このプロシージャのコールは、ブラウザから直接行います。
構文
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 );
パラメータ
表3-1 APEX_AUTHENTICATION.CALLBACKプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
Application Expressセッション識別子。 |
|
データベース・アプリケーション識別子。 |
|
ページ識別子(オプション)。 |
|
システム生成のAjax識別子。GET_AJAX_IDENTIFIERファンクションを参照してください。 |
|
外部ログインによって認証プラグインに渡されるオプション・パラメータ。 |
例1
この例では、外部ログイン・ページにリダイレクトが行われ、認証の成功時に外部ログインのリダイレクト先となるApplication Expressにコールバックが渡されます。
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
この例では、外部ログイン・ページの共有表にユーザー・データを保存し、データへのハンドルを使用してコールバックを実行します。Application Expressでは、コールバックによって認証プラグインの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;