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, p_use_ssl IN VARCHAR2 DEFAULT 'N') RETURN BOOLEAN;
パラメータ
表15-1に、AUTHENTICATE
ファンクションで使用可能なパラメータを示します。
表15-1 AUTHENTICATEのパラメータ
パラメータ | 説明 |
---|---|
|
ユーザーのログイン名です。 |
|
|
|
LDAP検索ベース。たとえば、 |
|
LDAPサーバーのホスト名。 |
|
LDAPサーバーのポート番号。 |
|
LDAPサーバーへのバインドでSSLを使用する場合は'Y'を設定します。一方向認証(Oracleウォレットで構成されるLDAPサーバー証明書が必要)でSSLを使用する場合は'A'を設定します。SSLを使用しない場合は'N'を設定します(デフォルト)。 |
例
次の例に、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_use_ssl IN VARCHAR2 DEFAULT 'N', p_attributes OUT wwv_flow_global.vc_arr2, p_attribute_values OUT wwv_flow_global.vc_arr2);
パラメータ
表15-2に、GET_ALL_USER_ATTRIBUTES
プロシージャのパラメータを示します。
表15-2 GET_ALL_USER_ATTRIBUTESのパラメータ
パラメータ | 説明 |
---|---|
|
ユーザーのログイン名です。 |
|
|
|
LDAP検索ベース。たとえば、 |
|
LDAPサーバーのホスト名。 |
|
LDAPサーバーのポート番号。 |
|
LDAPサーバーへのバインドでSSLを使用する場合は'Y'を設定します。一方向認証(Oracleウォレットで構成されるLDAPサーバー証明書が必要)でSSLを使用する場合は'A'を設定します。SSLを使用しない場合は'N'を設定します(デフォルト)。 |
|
戻される属性名の配列。 |
|
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_use_ssl IN VARCHAR2 DEFAULT 'N', p_attributes IN wwv_flow_global.vc_arr2, p_attribute_values OUT wwv_flow_global.vc_arr2);
パラメータ
表15-3では、GET_USER_ATTRIBUTES
プロシージャで使用可能なパラメータについて説明します。
表15-3 GET_USER_ATTRIBUTESのパラメータ
パラメータ | 説明 |
---|---|
|
ユーザーのログイン名です。 |
|
|
|
LDAP検索ベース。たとえば、 |
|
LDAPサーバーのホスト名。 |
|
LDAPサーバーのポート番号。 |
|
LDAPサーバーへのバインドでSSLを使用する場合は'Y'を設定します。一方向認証(Oracleウォレットで構成されるLDAPサーバー証明書が必要)でSSLを使用する場合は'A'を設定します。SSLを使用しない場合は'N'を設定します(デフォルト)。 |
|
戻される値の属性名の配列。 |
|
|
例
次の例に、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_use_ssl IN VARCHAR2 DEFAULT 'N', p_group IN VARCHAR2, p_group_base IN VARCHAR2) RETURN BOOLEAN;
パラメータ
表15-4では、IS_MEMBER
ファンクションで使用可能なパラメータについて説明します。
表15-4 IS_MEMBERのパラメータ
パラメータ | 説明 |
---|---|
|
ユーザーのログイン名です。 |
|
|
|
LDAP検索ベース。たとえば、 |
|
LDAPサーバーのホスト名。 |
|
LDAPサーバーのポート番号。 |
|
LDAPサーバーへのバインドでSSLを使用する場合は'Y'を設定します。一方向認証(Oracleウォレットで構成されるLDAPサーバー証明書が必要)でSSLを使用する場合は'A'を設定します。SSLを使用しない場合は'N'を設定します。 |
|
メンバーシップを検索するグループ名。 |
|
検索を開始するベース。 |
例
次の例に、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, p_use_ssl IN VARCHAR2 DEFAULT 'N') RETURN wwv_flow_global.vc_arr2;
パラメータ
表15-5では、MEMBER_OF
ファンクションで使用可能なパラメータについて説明します。
表15-5 MEMBER_OFのパラメータ
パラメータ | 説明 |
---|---|
|
ユーザーのログイン名です。 |
|
|
|
LDAP検索ベース。たとえば、 |
|
LDAPサーバーのホスト名。 |
|
LDAPサーバーのポート番号。 |
|
LDAPサーバーへのバインドでSSLを使用する場合は'Y'を設定します。一方向認証(Oracleウォレットで構成されるLDAPサーバー証明書が必要)でSSLを使用する場合は'A'を設定します。SSLを使用しない場合は'N'を設定します(デフォルト)。 |
例
次の例に、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, p_use_ssl IN VARCHAR2 DEFAULT 'N') RETURN VARCHAR2;
パラメータ
表15-6では、MEMBER_OF2
ファンクションで使用可能なパラメータについて説明します。
表15-6 MEMBER_OF2のパラメータ
パラメータ | 説明 |
---|---|
|
ユーザーのログイン名です。 |
|
|
|
LDAP検索ベース。たとえば、 |
|
LDAPサーバーのホスト名。 |
|
LDAPサーバーのポート番号。 |
|
LDAPサーバーへのバインドでSSLを使用する場合は'Y'を設定します。一方向認証(Oracleウォレットで構成されるLDAPサーバー証明書が必要)でSSLを使用する場合は'A'を設定します。SSLを使用しない場合は'N'を設定します(デフォルト)。 |
例
次の例に、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;