APEX_LDAPを使用すると、Lightweight Directory Access Protocol(LDAP)認証に関連する様々な操作を実行できます。
このセクションの構成は次のとおりです。
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のパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ユーザーのログイン名です。 |
|
|
|
|
|
LDAP検索ベース。たとえば、 |
|
|
LDAPサーバーのホスト名。 |
|
|
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プロシージャは、指定した認証ベース、ホストおよびポートを使用して、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のパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ユーザーのログイン名です。 |
|
|
|
|
|
LDAP検索ベース。たとえば、 |
|
|
LDAPサーバーのホスト名。 |
|
|
LDAPサーバーのポート番号。 |
|
|
戻される属性名の配列。 |
|
|
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プロシージャは、指定した認証ベース、ホストおよびポートを使用して、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のパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ユーザーのログイン名です。 |
|
|
|
|
|
LDAP検索ベース。たとえば、 |
|
|
LDAPサーバーのホスト名。 |
|
|
LDAPサーバーのポート番号。 |
|
|
戻される値の属性名の配列。 |
|
|
|
例
次の例に、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ファンクションは、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のパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ユーザーのログイン名です。 |
|
|
|
|
|
LDAP検索ベース。たとえば、 |
|
|
LDAPサーバーのホスト名。 |
|
|
LDAPサーバーのポート番号。 |
|
|
メンバーシップを検索するグループ名。 |
|
|
検索を開始するベース。 |
例
次の例に、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ファンクションは、指定した認証ベース、ホストおよびポートを使用して、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のパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ユーザーのログイン名です。 |
|
|
|
|
|
LDAP検索ベース。たとえば、 |
|
|
LDAPサーバーのホスト名。 |
|
|
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ファンクションは、指定した認証ベース、ホストおよびポートを使用して、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のパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ユーザーのログイン名です。 |
|
|
|
|
|
LDAP検索ベース。たとえば、 |
|
|
LDAPサーバーのホスト名。 |
|
|
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;