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

前
 
次
 

6 APEX_LDAP

APEX_LDAPを使用すると、Lightweight Directory Access Protocol(LDAP)認証に関連する様々な操作を実行できます。

このセクションの構成は次のとおりです。


AUTHENTICATEファンクション

AUTHENTICATEファンクションは、指定した検索ベース、ホストおよびポートを使用して、SIMPLE_BIND_Sコールを実行するためにユーザー名およびパスワードを使用できる場合、ブール値TRUEを戻します。

構文

APEX_LDAP.AUTHENTICATE(
    p_username     IN VARCHAR2 DEFAULT NULL,
    p_password     IN VARCHAR2 DEFAULT NULL,
    p_search_base  IN VARCHAR2,
    p_host         IN VARCHAR2,
    p_port         IN VARCHAR2 DEFAULT 389)
RETURN BOOLEAN;

パラメータ

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

表6-1 AUTHENTICATEのパラメータ

パラメータ 説明

p_username

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

p_password

p_usernameのパスワード。

p_search_base

LDAP検索ベース。たとえば、dc=users,dc=my,dc=orgなど。

p_host

LDAPサーバーのホスト名。

p_port

LDAPサーバーのポート番号。


次の例に、APEX_LDAP.AUTHENTICATEファンクションを使用して、ユーザー資格証明をLDAPサーバーに対して検証する方法を示します。

IF APEX_LDAP.AUTHENTICATE(
    p_username =>'firstname.lastname',
    p_password =>'abcdef',
    p_search_base => 'cn=user,l=amer,dc=my_company,dc=com',
    p_host => 'our_ldap_sever.my_company.com',
    p_port => 389) THEN
    dbms_output.put_line('authenticated');
ELSE
    dbms_output.put_line('authentication failed');
END IF;

GET_ALL_USER_ATTRIBUTESプロシージャ

GET_ALL_USER_ATTRIBUTESプロシージャは、指定した認証ベース、ホストおよびポートを使用して、p_username(および必要に応じてパスワード)によって指定されたユーザー名に対するuser_attributeの名前と値の2つのOUT配列を戻します。

構文

APEX_LDAP.GET_ALL_USER_ATTRIBUTES(
    p_username          IN VARCHAR2 DEFAULT NULL,
    p_pass              IN VARCHAR2 DEFAULT NULL,
    p_auth_base         IN VARCHAR2 DEFAULT NULL,
    p_host              IN VARCHAR2,
    p_port              IN VARCHAR2 DEFAULT 389,
    p_attributes        OUT wwv_flow_global.vc_arr2,
    p_attribute_values  OUT wwv_flow_global.vc_arr2);

パラメータ

表6-2に、GET_ALL_USER_ATTRIBUTESプロシージャのパラメータを示します。

表6-2 GET_ALL_USER_ATTRIBUTESのパラメータ

パラメータ 説明

p_username

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

p_pass

p_usernameのパスワード。

p_auth_base

LDAP検索ベース。たとえば、dc=users,dc=my,dc=orgなど。

p_host

LDAPサーバーのホスト名。

p_port

LDAPサーバーのポート番号。

p_attributes

戻される属性名の配列。

p_attribute_values

p_attributesの各属性名に対応して戻される値の配列。


次の例に、APEX_LDAP.GET_ALL_USER_ATTRIBUTESプロシージャを使用して、ユーザーに関連付けられているすべての属性値を取得する方法を示します。

DECLARE
    L_ATTRIBUTES       wwv_flow_global.vc_arr2;
    L_ATTRIBUTE_VALUES wwv_flow_global.vc_arr2;
BEGIN
    APEX_LDAP.GET_ALL_USER_ATTRIBUTES(
        p_username         => 'firstname.lastname',
        p_pass             => 'abcdef',
        p_auth_base        => 'cn=user,l=amer,dc=my_company,dc=com',
        p_host             => 'our_ldap_sever.my_company.com',
        p_port             => '389',
        p_attributes       => L_ATTRIBUTES,
        p_attribute_values => L_ATTRIBUTE_VALUES);
 
     FOR i IN L_ATTRIBUTES.FIRST..L_ATTRIBUTES.LAST LOOP
         htp.p('attribute name: '||L_ATTRIBUTES(i));
         htp.p('attribute value: '||L_ATTRIBUTE_VALUES(i));
     END LOOP;
END;

GET_USER_ATTRIBUTESプロシージャ

GET_USER_ATTRIBUTESプロシージャは、指定した認証ベース、ホストおよびポートを使用して、p_attributesによって指定された属性名に対応するp_username(および必要に応じてパスワード)によって指定されたユーザー名に対するuser_attribute値のOUT配列を戻します。

構文

APEX_LDAP.GET_USER_ATTRIBUTES(
    p_username          IN VARCHAR2 DEFAULT NULL,
    p_pass              IN VARCHAR2 DEFAULT NULL,
    p_auth_base         IN VARCHAR2,
    p_host              IN VARCHAR2,
    p_port              IN VARCHAR2 DEFAULT 389,
    p_attributes        IN  wwv_flow_global.vc_arr2,
    p_attribute_values  OUT wwv_flow_global.vc_arr2);

パラメータ

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

表6-3 GET_USER_ATTRIBUTESのパラメータ

パラメータ 説明

p_username

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

p_pass

p_usernameのパスワード。

p_auth_base

LDAP検索ベース。たとえば、dc=users,dc=my,dc=orgなど。

p_host

LDAPサーバーのホスト名。

p_port

LDAPサーバーのポート番号。

p_attributes

戻される値の属性名の配列。

p_attribute_values

p_attributesの各属性名に対応して戻される値の配列。


次の例に、APEX_LDAP.GET_USER_ATTRIBUTESプロシージャを使用して、ユーザーに関連付けられている特定の属性値を取得する方法を示します。

DECLARE
    L_ATTRIBUTES wwv_flow_global.vc_arr2;
    L_ATTRIBUTE_VALUES wwv_flow_global.vc_arr2;
BEGIN
    L_ATTRIBUTES(1) := 'xxxxxxxxxx'; /* name of the employee number attribute */
    APEX_LDAP.GET_USER_ATTRIBUTES(
        p_username => 'firstname.lastname',
        p_pass => NULL,
        p_auth_base => 'cn=user,l=amer,dc=my_company,dc=com',
        p_host => 'our_ldap_sever.my_company.com',
        p_port => '389',
        p_attributes => L_ATTRIBUTES,
        p_attribute_values => L_ATTRIBUTE_VALUES);
END;

IS_MEMBERファンクション

IS_MEMBERファンクションは、p_username(および必要に応じてパスワード)によって指定したユーザーが、指定されている認証ベース、ホストおよびポートを使用してp_groupおよびp_group_baseパラメータによって指定したグループのメンバーである場合、ブール値trueを戻します。

構文

APEX_LDAP.IS_MEMBER(
    p_username     IN VARCHAR2,
    p_pass         IN VARCHAR2 DEFAULT NULL,
    p_auth_base    IN VARCHAR2,
    p_host         IN VARCHAR2,
    p_port         IN VARCHAR2 DEFAULT 389,
    p_group        IN VARCHAR2,
    p_group_base   IN VARCHAR2)
RETURN BOOLEAN;

パラメータ

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

表6-4 IS_MEMBERのパラメータ

パラメータ 説明

p_username

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

p_pass

p_usernameのパスワード。

p_auth_base

LDAP検索ベース。たとえば、dc=users,dc=my,dc=orgなど。

p_host

LDAPサーバーのホスト名。

p_port

LDAPサーバーのポート番号。

p_group

メンバーシップを検索するグループ名。

p_group_base

検索を開始するベース。


次の例に、APEX_LDAP.IS_MEMBERファンクションを使用して、ユーザーがグループのメンバーであるかどうかをLDAPサーバーに対して検証する方法を示します。

DECLARE
    L_VAL boolean;
BEGIN
    L_VAL := APEX_LDAP.IS_MEMBER(
        p_username =>'firstname.lastname',
        p_pass =>'abcdef',
        p_auth_base => 'cn=user,l=amer,dc=my_company,dc=com',
        p_host => 'our_ldap_sever.my_company.com',
        p_port => 389,
        p_group => 'group_name',
        p_group_base => 'group_base');
    IF L_VAL THEN
        htp.p('Is a member.');
    ELSE
        htp.p('Not a member.');
    END IF;
END;

MEMBER_OFファンクション

MEMBER_OFファンクションは、指定した認証ベース、ホストおよびポートを使用して、p_username(および必要に応じてパスワード)によって指定されたユーザー名が属するグループの配列を戻します。

構文

APEX_LDAP.MEMBER_OF(
    p_username     IN VARCHAR2 DEFAULT NULL,
    p_pass         IN VARCHAR2 DEFAULT NULL,
    p_auth_base    IN VARCHAR2,
    p_host         IN VARCHAR2,
    p_port         IN VARCHAR2 DEFAULT 389)
RETURN wwv_flow_global.vc_arr2;

パラメータ

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

表6-5 MEMBER_OFのパラメータ

パラメータ 説明

p_username

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

p_pass

p_usernameのパスワード。

p_auth_base

LDAP検索ベース。たとえば、dc=users,dc=my,dc=orgなど。

p_host

LDAPサーバーのホスト名。

p_port

LDAPサーバーのポート番号。


次の例に、APEX_LDAP.MEMBER_OFファンクションを使用して、指定したユーザー名で特定されたすべてのグループを取得する方法を示します。

DECLARE
    L_MEMBERSHIP       wwv_flow_global.vc_arr2;
BEGIN
    L_MEMBERSHIP := APEX_LDAP.MEMBER_OF(
        p_username         => 'firstname.lastname',
        p_pass             => 'abcdef',
        p_auth_base        => 'cn=user,l=amer,dc=my_company,dc=com',
        p_host             => 'our_ldap_sever.my_company.com',
        p_port             => '389');
    FOR i IN L_MEMBERSHIP.FIRST..L_MEMBERSHIP.LAST LOOP
        htp.p('Member of: '||L_MEMBERSHIP(i));
    END LOOP;
END;

MEMBER_OF2ファンクション

MEMBER_OF2ファンクションは、指定した認証ベース、ホストおよびポートを使用して、p_username(および必要に応じてパスワード)によって指定されたユーザー名が属するグループのVARCHAR2コロン区切りリストを戻します。

構文

APEX_LDAP.MEMBER_OF2(
    p_username     IN VARCHAR2 DEFAULT NULL,
    p_pass         IN VARCHAR2 DEFAULT NULL,
    p_auth_base    IN VARCHAR2,
    p_host         IN VARCHAR2,
    p_port         IN VARCHAR2 DEFAULT 389)
RETURN VARCHAR2;

パラメータ

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

表6-6 MEMBER_OF2のパラメータ

パラメータ 説明

p_username

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

p_pass

p_usernameのパスワード。

p_auth_base

LDAP検索ベース。たとえば、dc=users,dc=my,dc=orgなど。

p_host

LDAPサーバーのホスト名。

p_port

LDAPサーバーのポート番号。


次の例に、APEX_LDAP.MEMBER_OF2ファンクションを使用して、指定したユーザー名で特定されたすべてのグループを取得する方法を示します。

DECLARE
    L_VAL varchar2(4000);
BEGIN
    L_VAL := APEX_LDAP.MEMBER_OF2(
        p_username => 'firstname.lastname',
        p_pass => 'abcdef',
        p_auth_base => 'cn=user,l=amer,dc=my_company,dc=com',
        p_host => 'our_ldap_sever.my_company.com',
        p_port => 389);
    htp.p('Is Member of:'||L_VAL);
END;