- 概要
- 経緯
retval PLS_INTEGER;
my_session DBMS_LDAP.session;
BEGIN
retval:= -1;
my_session:= DBMS_LDAP.init('ldap.host.com',389);
retval:=DBMS_LDAP.simple_bind_
END;
セキュリティーの為、UTL_TCP, UTL_HTTP, UTL_SMTP, UTL_MAIL, UTL_INADDRといったPL/SQLパッケージのメソッドを実行するには、ACLベースの権限を付与する必要がある。
ACL を付与するには、DBMS_NETWORK_ACL_ADMIN パッケージで行う。
存在するACL は、DBA_NETWORK_ACLS ,DBA_NETWORK_ACL_PRIVILEGES ビューで参照可能。
とのこと。
おそらくLDAP通信にてUTL_
sqlplusにてDBAでログイン
select * from dba_network_acl_privileges;
-- ACLを作成
DBMS_NETWORK_ACL_ADMIN.CREATE_
-- ユーザーにACLで定義した権限を割り当て
DBMS_NETWORK_ACL_ADMIN.ADD_
-- ACLに対応する接続先を割り当て
DBMS_NETWORK_ACL_ADMIN.ASSIGN_
end;
/
正常に設定されると以下のメッセージが表示される。
と、これでうまくいくはずだったのですが結局できず…
以下のファンクションを作って対処することになりました…
むむぅ・・・
-----
return BOOLEAN
is
userdn varchar2(4000);
userpassword varchar2(4000);
retval PLS_INTEGER;
my_session DBMS_LDAP.session;
begin
-- 認証対象のユーザのDN
userdn:= 'uid=' || p_username || ',ou=ldap,ou=host,o=com';
userpassword:= p_password;
retval:= -1;
my_session:= DBMS_LDAP.init('ldap.host.com'
retval:= DBMS_LDAP.simple_bind_s(my_
if (retval = -1) then
return false;
else
return true;
end if;
end;