10.2 CALLBACKプロシージャ

このプロシージャは、外部ログイン・ページのランディング・リソースです。このプロシージャのコールは、ブラウザから直接行います。

ヒント:

"OAuth2"でマークされたパラメータは、カスタム・コールバックURLには使用しないでください。これらは、このプロシージャがソーシャル・サインインに使用されている場合にのみ使用されます。これらのパラメータはOAuth2仕様によって定義されます。

構文

APEX_AUTHENTICATION.CALLBACK (
    --
    -- Custom callback parameters
    --
    p_session_id        IN NUMBER   DEFAULT NULL,
    p_app_id            IN NUMBER   DEFAULT NULL,
    p_ajax_identifier   IN VARCHAR2 DEFAULT NULL,
    p_page_id           IN NUMBER   DEFAULT NULL,
    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,
    --
    -- OAuth2-related parameters
    --
    state               IN VARCHAR2 DEFAULT NULL,
    code                IN VARCHAR2 DEFAULT NULL,
    error               IN VARCHAR2 DEFAULT NULL,
    error_description   IN VARCHAR2 DEFAULT NULL,
    error_uri           IN VARCHAR2 DEFAULT NULL,
    error_reason        IN VARCHAR2 DEFAULT NULL,
    error_code          IN VARCHAR2 DEFAULT NULL,
    error_message       IN VARCHAR2 DEFAULT NULL,
    authuser            IN VARCHAR2 DEFAULT NULL,
    session_state       IN VARCHAR2 DEFAULT NULL,
    prompt              IN VARCHAR2 DEFAULT NULL,
    hd                  IN VARCHAR2 DEFAULT NULL,
    scope               IN VARCHAR2 DEFAULT NULL,
    realmID             IN VARCHAR2 DEFAULT NULL )

パラメータ

パラメータ 説明
p_session_id Oracle APEXセッション識別子。
p_app_id データベース・アプリケーション識別子。
p_page_id ページ識別子(オプション)。
p_ajax_identifier システム生成のAjax識別子。「GET_AJAX_IDENTIFIERファンクション」を参照してください。
p_x01から p_x10 外部ログインによって認証プラグインに渡されるオプション・パラメータ。
state OAuth2.
code OAuth2.
error OAuth2.
error_description OAuth2.
error_uri OAuth2.
error_reason OAuth2.
error_code OAuth2.
error_message OAuth2.
authuser OAuth2.
session_state OAuth2.
prompt OAuth2.
hd OAuth2.
scope OAuth2.
realmID OAuth2.

例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;