ヘッダーをスキップ
Oracle® Application Express APIリファレンス
リリース4.2
B71112-01
  目次へ移動
目次

前
 
次
 

3 APEX_AUTHENTICATION

APEX_AUTHENTICATIONパッケージは、認証プラグイン用のパブリックAPIを提供します。

トピック:


定数

このパッケージでは、次の定数が使用されます。

c_default_username_cookie constant varchar2(30) := 'LOGIN_USERNAME_COOKIE';

CALLBACKプロシージャ

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

構文

APEX_AUTHENTICATION.CALLBACK ( 
    p_session_id IN NUMBER, 
    p_app_id IN NUMBER, 
    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に、CALLBACKプロシージャで使用可能なパラメータを示します。

表3-1 APEX_AUTHENTICATION.CALLBACKプロシージャのパラメータ

パラメータ 説明

p_session_id

Application Expressのセッション識別子。

p_app_id

データベースのアプリケーション識別子。

p_ajax_identifierp

システム生成のAJAX識別子。「GET_AJAX_IDENTIFIER Function」を参照してください。

p_x01からp_x10

外部ログインが認証プラグインに渡すオプション・パラメータ。


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

GET_CALLBACK_URLファンクション

このファンクションは、外部ログイン・ページで開始リクエストとして使用されたURLを戻すためのプラグイン・ヘルパー・ファンクションです。ブラウザがリクエストを送信すると、認証プラグインのajaxコールバック(ユーザーのログインに使用可能)がトリガーされます。

構文

APEX_AUTHENTICATION.GET_CALLBACK_URL ( 
    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 ) 
    return VARCHAR2; 

パラメータ

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

表3-2 APEX_AUTHENTICATION.GET_CALLBACK _URLファンクションのパラメータ

パラメータ 説明

p_x01からp_x10

外部ログインによって認証プラグインに渡されるオプション・パラメータ。


「CALLBACK Procedure」の例を参照してください。


GET_LOGIN_USERNAME_COOKIEファンクション

このファンクションでは、デフォルトのログイン・ページからユーザー名を含んだCookieを読み取ります。

構文

APEX_AUTHENTICATION.GET_LOGIN_USERNAME_COOKIE ( 
    p_cookie_name IN VARCHAR2 DEFAULT c_default_username_cookie ) 
    return varchar2; 

パラメータ

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

表3-3 APEX_AUTHENTICATION.GET_LOGIN_USERNAME_COOKIEファンクションのパラメータ

パラメータ 説明

p_cookie_name

ブラウザにユーザー名を格納するCookie名。


この例では、ページ・アイテムP101_USERNAMEにユーザー名Cookie値を保存するためにGET_LOGIN_USERNAME_COOKIEが使用されます。

:P101_USERNAME := apex_authentication.get_login_username_cookie;

IS_AUTHENTICATEDファンクション

このファンクションは、ユーザーがセッションで認証されているかどうかを確認し、ユーザーがすでにログインしている場合はTRUEを、現行セッションのユーザーがまだ認証されていない場合はFALSEを返します。

構文

APEX_AUTHENTICATION.IS_AUTHENTICATED
    return BOOLEAN;

パラメータ

なし。

この例では、IS_AUTHENTICATEDは、ユーザーがすでにログインしている場合はユーザー名を、ユーザーがログインしていない場合は通知を表示するために使用されます。

if apex_authentication.is_authenticated then 
    sys.htp.p(apex_escape.html(:APP_USER)||', you are known to the system'); 
else 
    sys.htp.p('Please sign in'); 
end if; 

IS_PUBLIC_USERファンクション

このファンクションは、セッションでユーザーが認証されているかどうかを確認します。ユーザーがすでにログインしている場合はFALSEを、現行セッションのユーザーがまだ認証されていない場合はTRUEを返します。

構文

APEX_AUTHENTICATION.IS_PUBLIC_USER
    return BOLLEAN;

パラメータ

なし。

この例では、ユーザーがすでにログインしている場合は通知を、ユーザーがログインしていない場合はユーザー名を表示するためにIS_PUBLIC_USERが使用されます。

if apex_authentication.is_public_user then 
    sys.htp.p('Please sign in'); 
else 
    sys.htp.p(apex_escape.html(:APP_USER)||', you are known to the system'); 
end if; 

LOGINプロシージャ

このプロシージャは、現行セッションのユーザーを認証します。

ログイン処理では、次の手順を実行します。

  1. 認証スキームの認証前のプロシージャを実行します。

  2. 認証スキームの認証ファンクションを実行して、ユーザーの資格証明(p_username、p_password)を確認します(成功するとTRUEが返されます)。

  3. result=trueの場合、認証後のプロシージャを実行します。

  4. result=trueの場合、セッション表にユーザー名を保存します。

  5. result=trueの場合、ディープ・リンク用のリダイレクトURLを設定します。

  6. result=falseの場合、エラー・メッセージをnotification_msgパラメータに設定したリダイレクトURLを現行ページに設定します。

  7. 認証結果を記録します。

  8. リダイレクトします。

構文

APEX_AUTHENTICATION.LOGIN ( 
    p_username IN VARCHAR2, 
    p_password IN VARCHAR2, 
    p_uppercase_username IN BOOLEAN DEFAULT TRUE ); 

パラメータ

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

表3-4 APEX_AUTHENTICATION.LOGINプロシージャのパラメータ

パラメータ 説明

p_username

ユーザーの名前。

p_password

ユーザーのパスワード。

p_uppercase_username

TRUEの場合は、p_usernameが大文字に変換されます。


この例では、ユーザーの資格証明、ユーザー名およびパスワードが認証スキームに渡されます。

apex_authentication.login('JOE USER', 'mysecret');

LOGOUTプロシージャ

このプロシージャは、セッションをクローズし、アプリケーションのホーム・ページにリダイレクトします。このプロシージャのコールは、ブラウザから直接行います。

構文

APEX_AUTHECNTICTATION.LOGOUT ( 
    p_session_id in number, 
    p_app_id in number, 
    p_ws_app_id in number default null );

パラメータ

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

表3-5 APEX_AUTHENTICATION.LOGOUTプロシージャのパラメータ

パラメータ 説明

p_session_id

クローズするセッションのApplication Expressのセッション識別子。

p_app_id

データベース・アプリケーション識別子。

p_ws_app_id

Webシートのアプリケーション識別子。


この例では、セッションをログアウトします。

apex_authentication.logout(:SESSION, :APP_ID);

POST_LOGINプロシージャ

このプロシージャは、カレント・セッションのユーザーを認証します。手順1および2を行わずに、login()のサブセットを実行します。手順については、「LOGINプロシージャ」を参照してください。ユーザー資格証明の確認がApplication Express外部で実行される認証スキームで主に役立ちます。

構文

APEX_AUTHENTICATION.POST_LOGIN ( 
    p_username IN VARCHAR2, 
    p_password IN VARCHAR2, 
    p_uppercase_username IN BOOLEAN DEFAULT TRUE ); 

パラメータ

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

表3-6 APEX_AUTHENTICATION.POST_LOGINプロシージャのパラメータ

パラメータ 説明

p_username

ユーザーの名前。

p_password

ユーザーのパスワード。

p_uppercase_username

TRUEの場合、p_usernameは大文字に変換されます。


このプロシージャ・コールでは、ユーザー資格証明、ユーザー名およびパスワードを認証スキームに渡してユーザーの認証を終了します。

apex_authentication.post_login('JOE USER', 'mysecret');

SEND_LOGIN_USERNAME_COOKIEプロシージャ

このプロシージャは、ユーザー名を含んだCookieを送信します。

構文

APEX_AUTHENTICATION.SEND_LOGIN_USERNAME_COOKIE ( 
    p_username IN VARCHAR2, 
    p_cookie_name IN VARCHAR2 DEFAULT c_default_username_cookie ); 

パラメータ

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

表3-7 APEX_AUTHENTICATION.SEND_LOGIN_USERNAME_COOKIEプロシージャのパラメータ

パラメータ 説明

p_username

ユーザーの名前。

p_cookie_name

ブラウザにp_usernameを格納するCookie名。


この例では、ログインCookieにアイテムP101_USERNAMEの値を保存するためのSEND_LOGIN_USERNAME_COOKIEのコール方法を示します。

apex_authentication.send_login_username_cookie (
    p_username => :P101_USERNAME );