ヘッダーをスキップ
Oracle® Application Express APIリファレンス
リリース4.2 for Oracle Database 12c
B71340-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

6 APEX_CUSTOM_AUTH

APEX_CUSTOM_AUTHパッケージを使用すると、認証およびセッション管理に関連する様々な操作を実行できます。

トピック:

APPLICATION_PAGE_ITEM_EXISTSファンクション

このファンクションは、アプリケーションのカレント・ページ内のページ・レベル・アイテムの存在を確認します。このファンクションでは、パラメータp_item_nameが必要です。このファンクションはブール値(trueまたはfalse)を戻します。

構文

APEX_CUSTOM_AUTH.APPLICATION_PAGE_ITEM_EXISTS(
    p_item_name   IN    VARCHAR2)
RETURN BOOLEAN;

パラメータ

表6-1に、APPLICATION_PAGE_ITEM_EXISTSファンクションで使用可能なパラメータを示します。

表6-1 APPLICATION_PAGE_ITEM_EXISTSのパラメータ

パラメータ 説明

p_item_name

ページ・レベル・アイテムの名前。


次の例では、アプリケーションのカレント・ページ内にページ・レベル・アイテムITEM_NAMEが存在するかどうかを確認します。

DECLARE
    L_VAL BOOLEAN;
BEGIN
    VAL := APEX_CUSTOM_AUTH.APPLICATION_PAGE_ITEM_EXISTS(:ITEM_NAME);
    IF L_VAL THEN
        htp.p('Item Exists');
    ELSE
        htp.p('Does not Exist');
    END IF;
END;

CURRENT_PAGE_IS_PUBLICファンクション

このファンクションは、カレント・ページの認証属性がパブリック・ページに設定されているかどうかを確認し、ブール値(trueまたはfalse)を戻します。


参照:

『Oracle Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド』の「ページ属性の編集」

構文

APEX_CUSTOM_AUTH.CURRENT_PAGE_IS_PUBLIC 
RETURN BOOLEAN;

次の例では、アプリケーションのカレント・ページがパブリックかどうかを確認します。

DECLARE
    L_VAL BOOLEAN;
BEGIN
    L_VAL := APEX_CUSTOM_AUTH.CURRENT_PAGE_IS_PUBLIC;
    IF L_VAL THEN
        htp.p('Page is Public');
    ELSE
        htp.p('Page is not Public');
    END IF;
END;

DEFINE_USER_SESSIONプロシージャ

このプロシージャは、SET_USERおよびSET_SESSION_IDプロシージャを組み合せて、1回のコールに結合します。

構文

APEX_CUSTOM_AUTH.DEFINE_USER_SESSION(
    p_user         IN    VARCHAR2,
    p_session_id   IN    NUMBER);

パラメータ

表6-2に、DEFINE_USER_SESSIONプロシージャで使用可能なパラメータを示します。

表6-2 DEFINE_USER_SESSIONのパラメータ

パラメータ 説明

p_user

ユーザーのログイン名です。

p_session_id

セッションID。


次の例では、新しいセッションIDが生成され、カレント・アプリケーション・ユーザーとともに登録されます。

APEX_CUSTOM_AUTH.DEFINE_USER_SESSION (
    :APP_USER, 
    APEX_CUSTOM_AUTH.GET_NEXT_SESSION_ID);

GET_COOKIE_PROPSプロシージャ

このプロシージャは、指定したアプリケーションのカレント認証スキームで使用されるセッションCookieのプロパティを取得します。これらのプロパティは、認証スキームCookie属性を表示することによって、アプリケーション・ビルダーに直接表示できます。

構文

APEX_CUSTOM_AUTH.GET_COOKIE_PROPS(
    p_app_id                       IN  NUMBER,
    p_cookie_name                  OUT VARCHAR2,
    p_cookie_path                  OUT VARCHAR2,
    p_cookie_domain                OUT VARCHAR2
    p_secure                                    OUT BOOLEAN);

パラメータ

表6-3に、GET_COOKIE_PROPSプロシージャで使用可能なパラメータを示します。

表6-3 GET_COOKIE_PROPSのパラメータ

パラメータ 説明

p_app_id

現行のワークスペースのアプリケーションIDです。

p_cookie_name

Cookie名です。

p_cookie_path

Cookieパスです。

p_cookie_domain

Cookieドメインです。

p_secure

Cookieのsecureプロパティを設定するためのフラグです。


次の例では、カレント・アプリケーションの認証スキームで使用されるセッションCookieの値を取得します。

DECLARE
    l_cookie_name   varchar2(256);
    l_cookie_path   varchar2(256);
    l_cookie_domain varchar2(256);
    l_secure        boolean;
BEGIN
    APEX_CUSTOM_AUTH.GET_COOKIE_PROPS(
        p_app_id => 2918,
        p_cookie_name => l_cookie_name,
        p_cookie_path => l_cookie_path,
        p_cookie_domain => l_cookie_domain,
        p_secure => l_secure);
END;

GET_LDAP_PROPSプロシージャ

このプロシージャは、カレント・アプリケーションのカレント認証スキームのLDAP属性を取得します。これらのプロパティは、認証スキーム属性を表示することによって、アプリケーション・ビルダーに直接表示できます。

構文

APEX_CUSTOM_AUTH.GET_LDAP_PROPS(
    p_ldap_host                OUT VARCHAR2,
    p_ldap_port                OUT INTEGER,
    p_use_ssl                  OUT VARCHAR2,
    p_use_exact_dn             OUT VARCHAR2,
    p_search_filter            OUT VARCHAR2,
    p_ldap_dn                  OUT VARCHAR2,
    p_ldap_edit_function       OUT VARCHAR2);

パラメータ

表6-4に、GET_LDAP_PROPSプロシージャで使用可能なパラメータを示します。

表6-4 GET_LDAP_PROPSのパラメータ

パラメータ 説明

p_ldap_host

LDAPホスト名です。

p_ldap_port

LDAPポート番号です。

p_use_ssl

SSLが使用されているかどうかについてです。

p_use_exact_dn

完全な識別名を使用するかどうかについてです。

p_search_filter

完全なDNを使用しない場合に使用される検索フィルタです。

p_ldap_dn

LDAP DN文字列です。

p_ldap_edit_function

LDAP編集ファンクション名です。


次の例では、カレント・アプリケーションに関連付けられているLDAP属性を取得します。

DECLARE
    l_ldap_host          VARCHAR2(256);
    l_ldap_port          INTEGER;
    l_use_ssl            VARCHAR2(1);
    l_use_exact_dn       VARCHAR2(1);
    l_search_filter      VARCHAR2(256);
    l_ldap_dn            VARCHAR2(256);
    l_ldap_edit_function VARCHAR2(256);
BEGIN
APEX_CUSTOM_AUTH.GET_LDAP_PROPS (
    p_ldap_host       => l_ldap_host,
    p_ldap_port       => l_ldap_port,
    p_use_ssl         => l_use_ssl,
    p_use_exact_dn    => l_use_exact_dn,
    p_search_filter   => l_search_filter,
    p_ldap_dn         => l_ldap_dn,
    p_ldap_edit_function => l_ldap_edit_function);
END;

GET_NEXT_SESSION_IDファンクション

このファンクションは、Oracle Application Express順序ジェネレータから次のセッションIDを生成します。このファンクションは数値を戻します。

構文

APEX_CUSTOM_AUTH.GET_NEXT_SESSION_ID 
RETURN NUMBER;

次の例では、次のセッションIDを生成して変数に格納します。

DECLARE
    VAL NUMBER;
BEGIN
    VAL := APEX_CUSTOM_AUTH.GET_NEXT_SESSION_ID;
END;

GET_SECURITY_GROUP_IDファンクション

このファンクションは、カレント・ユーザーのワークスペースを示すセキュリティ・グループIDの数値を戻します。

構文

APEX_CUSTOM_AUTH.GET_SECURITY_GROUP_ID 
RETURN NUMBER;

次の例では、カレント・ユーザーのセキュリティ・グループIDを取得します。

DECLARE
    VAL NUMBER;
BEGIN
    VAL := APEX_CUSTOM_AUTH.GET_SECURITY_GROUP_ID;
END;

GET_SESSION_IDファンクション

このファンクションは、APEX_APPLICATION.G_INSTANCEグローバル変数を戻します。GET_SESSION_IDは数値を戻します。

構文

APEX_CUSTOM_AUTH.GET_SESSION_ID 
RETURN NUMBER;

次の例では、カレント・ユーザーのセッションIDを取得します。

DECLARE
    VAL NUMBER;
BEGIN
    VAL := APEX_CUSTOM_AUTH.GET_SESSION_ID;
END;

GET_SESSION_ID_FROM_COOKIEファンクション

このファンクションは、現行のブラウザ・セッションのページ・リクエストでセッションCookieによって検索されたOracle Application ExpressのセッションIDを戻します。

構文

APEX_CUSTOM_AUTH.GET_SESSION_ID_FROM_COOKIE
RETURN NUMBER;

次の例では、現行のセッションCookieからセッションIDを取得します。

DECLARE 
    VAL NUMBER;
BEGIN
    VAL := APEX_CUSTOM_AUTH.GET_SESSION_ID_FROM_COOKIE;
END;

GET_USERファンクション

このファンクションは、APEX_APPLICATION.G_USERグローバル変数(VARCHAR2)を戻します。

構文

APEX_CUSTOM_AUTH.GET_USER 
RETURN VARCHAR2;

次の例では、カレント・セッションに関連付けられているユーザー名を取得します。

DECLARE
    VAL VARCHAR2(256);
BEGIN
    VAL := APEX_CUSTOM_AUTH.GET_USER;
END;

GET_USERNAMEファンクション

このファンクションは、内部セッション表の現行のOracle Application Expressセッションに登録されたユーザー名を戻します。通常、このユーザー名は、カレント・ページを実行している認証されたユーザーと同じ名前です。

構文

APEX_CUSTOM_AUTH.GET_USERNAME
RETURN VARCHAR2;

次の例では、カレント・アプリケーション・セッションに登録されているユーザー名を取得します。

DECLARE
    VAL VARCHAR2(256);
BEGIN
    VAL := APEX_CUSTOM_AUTH.GET_USERNAME;
END;

IS_SESSION_VALIDファンクション

このファンクションは、有効なセッションが存在するかどうかを確認するカレント・アプリケーションの認証スキームを実行することによって取得されるブール結果を戻します。認証スキームのページ・エントリのブール結果を戻します。

構文

APEX_CUSTOM_AUTH.IS_SESSION_VALID
RETURN BOOLEAN;

次の例では、カレント・セッションが有効かどうかを検証します。

DECLARE
    L_VAL BOOLEAN;
BEGIN
    L_VAL := APEX_CUSTOM_AUTH.IS_SESSION_VALID;
    IF L_VAL THEN
        htp.p('Valid');
    ELSE
        htp.p('Invalid');
    END IF;
END;

LOGINプロシージャ

「ログインAPI」とも呼ばれるこのプロシージャは、認証およびセッションの登録を実行します。

構文

APEX_CUSTOM_AUTH.LOGIN(
    p_uname                    IN  VARCHAR2  DEFAULT NULL,
    p_password                 IN  VARCHAR2  DEFAULT NULL,
    p_session_id               IN  VARCHAR2  DEFAULT NULL,
    p_app_page                 IN  VARCHAR2  DEFAULT NULL,
    p_entry_point              IN  VARCHAR2  DEFAULT NULL,
    p_preserve_case            IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表6-5に、LOGINプロシージャで使用可能なパラメータを示します。

表6-5 LOGINのパラメータ

パラメータ 説明

p_uname

ユーザーのログイン名です。

p_password

クリア・テキストのユーザー・パスワードです。

p_session_id

現行のOracle Application ExpressセッションID。

p_app_page

カレント・アプリケーションIDです。ログイン・ページの後にコロン(:)で区切って指定します。

p_entry_point

内部でのみ使用します。

p_preserve_case

trueの場合は、セッションの登録時にp_unameを大文字で指定しないでください。


次の例では、ユーザーの認証およびセッションの登録を実行します。

BEGIN
    APEX_CUSTOM_AUTH.LOGIN (
        p_uname       => 'FRANK',
        p_password    => 'secret99',
        p_session_id  => V('APP_SESSION'),
        p_app_page    => :APP_ID||':1');
END;

注意:

p_session_id引数にバインド変数表記は使用しないでください。

LOGOUTプロシージャ

このプロシージャは、セッションCookieの設定解除および新しい位置へのリダイレクトを行うことによって、カレント・セッションからのログアウトを実行します。

構文

APEX_CUSTOM_AUTH.LOGOUT(
    p_this_app                   IN VARCHAR2  DEFAULT NULL,
    p_next_app_page_sess         IN VARCHAR2  DEFAULT NULL,
    p_next_url                   IN VARCHAR2  DEFAULT NULL);

パラメータ

表6-6に、LOGOUTプロシージャで使用可能なパラメータを示します。

表6-6 LOGOUTのパラメータ

パラメータ 説明

p_this_app

カレント・アプリケーションIDです。

p_next_app_page_sess

リダイレクト先のアプリケーションおよびページ番号です。複数のページをコロン(:)で区切って指定します。また、セッションIDの制御が必要な場合は、オプションでこれらのページの後にコロン(:)、続けてセッションIDを指定します。

p_next_url

リダイレクト先のURLです(p_next_app_page_sessのかわりに使用します)。


次の例では、カレント・セッションからのロウアウトおよびアプリケーション1000のページ99へのリダイレクトを実行します。

BEGIN
    APEX_CUSTOM_AUTH.LOGOUT (
        p_this_app            => '1000',
        p_next_app_page_sess  => '1000:99');
END;

POST_LOGINプロシージャ

認証ステップが完了している場合、このプロシージャはセッションの登録を実行します。Oracle Application Expressアプリケーション・ページのコンテキスト内からのみコールできます。

構文

APEX_CUSTOM_AUTH.POST_LOGIN(
    p_uname                    IN  VARCHAR2  DEFAULT NULL,
    p_session_id               IN  VARCHAR2  DEFAULT NULL,
    p_app_page                 IN  VARCHAR2  DEFAULT NULL,
    p_preserve_case            IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表6-7に、POST_LOGINプロシージャで使用可能なパラメータを示します。

表6-7 POST_LOGINのパラメータ

パラメータ 説明

p_uname

ユーザーのログイン名です。

p_session_id

現行のOracle Application ExpressセッションID。

p_app_page

カレント・アプリケーションIDです。ログイン・ページの後にコロン(:)で区切って指定します。

p_preserve_case

trueの場合は、セッションの登録時にp_unameを大文字で指定しないでください。


次の例では、認証の成功に続いて、セッションの登録を実行します。

BEGIN
    APEX_CUSTOM_AUTH.POST_LOGIN (
        p_uname       => 'FRANK',
        p_session_id  => V('APP_SESSION'),
        p_app_page    => :APP_ID||':1');
END;

SESSION_ID_EXISTSファンクション

このファンクションは、現行のOracle Application ExpressセッションIDを含むグローバル・パッケージ変数に基づいてブール結果を戻します。結果が正の数の場合はtrue、結果が負の数の場合はfalseを戻します。

構文

APEX_CUSTOM_AUTH.SESSION_ID_EXISTS 
RETURN BOOLEAN;

次の例では、現行のセッションIDが有効かどうかおよび存在するかどうかを確認します。

DECLARE
    L_VAL BOOLEAN;
BEGIN
    L_VAL := APEX_CUSTOM_AUTH.SESSION_ID_EXISTS;
    IF VAL THEN
        htp.p('Exists');
    ELSE
        htp.p('Does not exist');
    END IF;
END;

SET_SESSION_IDプロシージャ

このプロシージャは、APEX_APPLICATION.G_INSTANCEグローバル変数を設定します。このプロシージャには、セッションIDを指定するパラメータP_SESSION_ID(NUMBER)が必要です。

構文

APEX_CUSTOM_AUTH.SET_SESSION_ID( 
    p_session_id    IN    NUMBER);

パラメータ

表6-8に、SET_SESSION_IDプロシージャで使用可能なパラメータを示します。

表6-8 SET_SESSION_IDのパラメータ

パラメータ 説明

p_session_id

登録するセッションID。


次の例では、登録されたセッションIDの値がブラウザCookieから取得されます。

APEX_CUSTOM_AUTH.SET_SESSION_ID(APEX_CUSTOM_AUTH.GET_SESSION_ID_FROM_COOKIE);

SET_SESSION_ID_TO_NEXT_VALUEプロシージャ

このプロシージャは、GET_NEXT_SESSION_IDおよびSET_SESSION_IDの操作を1回のコールに結合します。

構文

APEX_CUSTOM_AUTH.SET_SESSION_ID_TO_NEXT_VALUE;

次の例では、カレント・セッションが有効でない場合、新しいセッションIDが生成され、登録されます。

IF NOT APEX_CUSTOM_AUTH.SESSION_ID_EXISTS THEN
    APEX_CUSTOM_AUTH.SET_SESSION_ID_TO_NEXT_VALUE;
END IF;

SET_USERプロシージャ

このプロシージャは、APEX_APPLICATION.G_USERグローバル変数を設定します。SET_USERには、ユーザーIDを定義するパラメータP_USER(VARCHAR2)が必要です。

構文

APEX_CUSTOM_AUTH.SET_USER(
    p_user   IN    VARCHAR2);

パラメータ

表6-9に、SET_USERプロシージャで使用可能なパラメータを示します。

表6-9 SET_USERのパラメータ

パラメータ 説明

p_user

登録するユーザーID。


次の例では、カレント・アプリケーション・ユーザーがNOBODYの場合、JOHN.DOEがアプリケーション・ユーザーとして登録されます。

IF V('APP_USER') = 'NOBODY' THEN
    APEX_CUSTOM_AUTH.SET_USER('JOHN.DOE');
END IF;