APEX_CUSTOM_AUTH
パッケージを使用すると、認証およびセッション管理に関連する様々な操作を実行できます。
このセクションの構成は次のとおりです。
このファンクションは、アプリケーションのカレント・ページ内のページ・レベル・アイテムの存在を確認します。このファンクションでは、パラメータp_item_name
が必要です。このファンクションはブール値(trueまたはfalse)を戻します。
構文
APEX_CUSTOM_AUTH.APPLICATION_PAGE_ITEM_EXISTS( p_item_name IN VARCHAR2) RETURN BOOLEAN;
パラメータ
表5-1に、APPLICATION_PAGE_ITEM_EXISTSファンクションで使用可能なパラメータを示します。
例
次の例では、アプリケーションのカレント・ページ内にページ・レベル・アイテム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;
このファンクションは、カレント・ページの認証属性がパブリック・ページに設定されているかどうかを確認し、ブール値(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;
このプロシージャは、SET_USER
およびSET_SESSION_ID
プロシージャを組み合せて、1回のコールに結合します。
構文
APEX_CUSTOM_AUTH.DEFINE_USER_SESSION( p_user IN VARCHAR2, p_session_id IN NUMBER);
パラメータ
表5-2に、DEFINE_USER_SESSION
プロシージャで使用可能なパラメータを示します。
例
次の例では、新しいセッションIDが生成され、カレント・アプリケーション・ユーザーとともに登録されます。
APEX_CUSTOM_AUTH.DEFINE_USER_SESSION ( :APP_USER, APEX_CUSTOM_AUTH.GET_NEXT_SESSION_ID);
このプロシージャは、指定したアプリケーションのカレント認証スキームで使用されるセッション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);
パラメータ
表5-3に、GET_COOKIE_PROPS
プロシージャで使用可能なパラメータを示します。
表5-3 GET_COOKIE_PROPSのパラメータ
パラメータ | 説明 |
---|---|
|
現行のワークスペースのアプリケーションIDです。 |
|
Cookie名です。 |
|
Cookieパスです。 |
|
Cookieドメインです。 |
|
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;
このプロシージャは、カレント・アプリケーションのカレント認証スキームのLDAP属性を取得します。これらのプロパティは、認証スキーム属性を表示することによって、アプリケーション・ビルダーに直接表示できます。
構文
APEX_CUSTOM_AUTH.GET_LDAP_PROPS( p_ldap_host OUT VARCHAR2, p_ldap_port OUT INTEGER, p_ldap_dn OUT VARCHAR2, p_ldap_edit_function OUT VARCHAR2);
パラメータ
表5-4に、GET_LDAP_PROPSプロシージャで使用可能なパラメータを示します。
表5-4 GET_LDAP_PROPSのパラメータ
パラメータ | 説明 |
---|---|
|
LDAPホスト名です。 |
|
LDAPポート番号です。 |
|
LDAP DN文字列です。 |
|
LDAP編集ファンクション名です。 |
例
次の例では、カレント・アプリケーションに関連付けられているLDAP属性を取得します。
DECLARE l_ldap_host VARCHAR2(256); l_ldap_port INTEGER; 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_ldap_dn => l_ldap_dn, p_ldap_edit_function => l_ldap_edit_function); END;
このファンクションは、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;
このファンクションは、カレント・ユーザーのワークスペースを示すセキュリティ・グループIDの数値を戻します。
構文
APEX_CUSTOM_AUTH.GET_SECURITY_GROUP_ID RETURN NUMBER;
例
次の例では、カレント・ユーザーのセキュリティ・グループIDを取得します。
DECLARE VAL NUMBER; BEGIN VAL := APEX_CUSTOM_AUTH.GET_SECURITY_GROUP_ID; END;
このファンクションは、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;
このファンクションは、現行のブラウザ・セッションのページ・リクエストのコンテキストでセッション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;
このファンクションは、APEX_APPLICATION
.G_USER
グローバル変数(VARCHAR2
)を戻します。
構文
APEX_CUSTOM_AUTH.GET_USER RETURN VARCHAR2;
例
次の例では、カレント・セッションに関連付けられているユーザー名を取得します。
DECLARE VAL VARCHAR2(256); BEGIN VAL := APEX_CUSTOM_AUTH.GET_USER; END;
このファンクションは、内部セッション表の現行のOracle Application Expressセッションに登録されたユーザー名を戻します。通常、このユーザー名は、カレント・ページを実行している認証されたユーザーと同じ名前です。
構文
APEX_CUSTOM_AUTH.GET_USERNAME RETURN VARCHAR2;
例
次の例では、カレント・アプリケーション・セッションに登録されているユーザー名を取得します。
DECLARE VAL VARCHAR2(256); BEGIN VAL := APEX_CUSTOM_AUTH.GET_USERNAME; END;
このファンクションは、有効なセッションが存在するかどうかを確認するカレント・アプリケーションの認証スキームを実行することによって取得されるブール結果を戻します。認証スキームのページ・エントリのブール結果を戻します。
構文
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;
「ログイン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);
パラメータ
表5-5に、LOGIN
プロシージャで使用可能なパラメータを示します。
表5-5 LOGINのパラメータ
パラメータ | 説明 |
---|---|
|
ユーザーのログイン名です。 |
|
クリア・テキストのユーザー・パスワードです。 |
|
現行のOracle Application ExpressセッションID。 |
|
カレント・アプリケーションIDです。ログイン・ページの後にコロン(:)で区切って指定します。 |
|
内部でのみ使用します。 |
|
trueの場合は、セッションの登録時に |
例
次の例では、ユーザーの認証およびセッションの登録を実行します。
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 引数にバインド変数表記は使用しないでください。 |
このプロシージャは、セッション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);
パラメータ
表5-6に、LOGOUT
プロシージャで使用可能なパラメータを示します。
表5-6 LOGOUTのパラメータ
パラメータ | 説明 |
---|---|
|
カレント・アプリケーションIDです。 |
|
リダイレクト先のアプリケーションおよびページ番号です。複数のページをコロン(:)で区切って指定します。また、セッションIDの制御が必要な場合は、オプションでこれらのページの後にコロン(:)、続けてセッションIDを指定します。 |
|
リダイレクト先のURLです( |
例
次の例では、カレント・セッションからのロウアウトおよびアプリケーション1000
のページ99
へのリダイレクトを実行します。
BEGIN APEX_CUSTOM_AUTH.LOGOUT ( p_this_app => '1000', p_next_app_page_sess => '1000:99'); END;
認証ステップが完了している場合、このプロシージャはセッションの登録を実行します。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);
パラメータ
表5-7に、POST_LOGIN
プロシージャで使用可能なパラメータを示します。
表5-7 POST_LOGINのパラメータ
パラメータ | 説明 |
---|---|
|
ユーザーのログイン名です。 |
|
現行のOracle Application ExpressセッションID。 |
|
カレント・アプリケーションIDです。ログイン・ページの後にコロン(:)で区切って指定します。 |
|
trueの場合は、セッションの登録時に |
例
次の例では、認証の成功に続いて、セッションの登録を実行します。
BEGIN APEX_CUSTOM_AUTH.POST_LOGIN ( p_uname => 'FRANK', p_session_id => V('APP_SESSION'), p_app_page => :APP_ID||':1'); END;
このファンクションは、現行の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;
このプロシージャは、APEX_APPLICATION
.G_INSTANCE
グローバル変数を設定します。このプロシージャには、セッションIDを指定するパラメータP_SESSION_ID
(NUMBER
)が必要です。
構文
APEX_CUSTOM_AUTH.SET_SESSION_ID( p_session_id IN NUMBER);
パラメータ
表5-8に、SET_SESSION_ID
プロシージャで使用可能なパラメータを示します。
例
次の例では、登録されたセッションIDの値がブラウザCookieから取得されます。
APEX_CUSTOM_AUTH.SET_SESSION_ID(APEX_CUSTOM_AUTH.GET_SESSION_ID_FROM_COOKIE);
このプロシージャは、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;
このプロシージャは、APEX_APPLICATION
.G_USER
グローバル変数を設定します。SET_USER
には、ユーザーIDを定義するパラメータP_USER
(VARCHAR2
)が必要です。
構文
APEX_CUSTOM_AUTH.SET_USER( p_user IN VARCHAR2);
パラメータ
表5-9に、SET_USER
プロシージャで使用可能なパラメータを示します。
例
次の例では、カレント・アプリケーション・ユーザーがNOBODYの場合、JOHN.DOEがアプリケーション・ユーザーとして登録されます。
IF V('APP_USER') = 'NOBODY' THEN APEX_CUSTOM_AUTH.SET_USER('JOHN.DOE'); END IF;