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;
親トピック: APEX_AUTHENTICATION