Solved

Query LDAP via Oracle Pl/sql

Posted on 2010-11-20
4
2,052 Views
Last Modified: 2013-11-30
I want to query LDAP server via Pl/Sql code. I am able to connect to the LDAP server but having difficulty to search/retrieve LDAP attributes.

Attached is the code.

If I call the function with a valid input value for LDAP attribute "uid" it returns 1. Otherwise 0. When it returns 1 I want to search LDAP to get the value of the LDAP attribute "cn" corresponding to the input "uid" attribute.

How can I write the code?
CREATE OR REPLACE PACKAGE BODY TEST IS

 FUNCTION test (in_uid IN VARCHAR2) RETURN NUMBER AS

 retval           INTEGER;

 my_attr      VARCHAR2(256);

 my_str       VARCHAR2(256);

 my_session   DBMS_LDAP.session;

 my_attrs     DBMS_LDAP.string_collection;

 my_message   DBMS_LDAP.message;

 entry_index      PLS_INTEGER;

 ldap_host        VARCHAR2(256);

 ldap_port        VARCHAR2(256);

 ldap_user        VARCHAR2(256);

 ldap_passwd      VARCHAR2(256);

 ldap_base        VARCHAR2(256);



 BEGIN

 retval := -1;

 ldap_host  := 'server.myco.com';

 ldap_port  := '389';

 ldap_user  := '';

 ldap_passwd:= '';

 ldap_base  := 'ou=People, ou=Intranet, dc=XXX, dc=com';

 my_session := DBMS_LDAP.init(ldap_host, ldap_port);

 retval := DBMS_LDAP.simple_bind_s(my_session, '', '');

 my_attrs(1) := '*';

 my_attr := 'UID';

 my_str  := my_attr || '=' || TRIM(in_uid);

 retval := DBMS_LDAP.my_s(my_session, ldap_base, DBMS_LDAP.SCOPE_SUBTREE, my_str, my_attrs, 0, my_message);

 retval := DBMS_LDAP.count_entries(my_session, my_message);

 RETURN(retval);

 END;

END;

Open in new window

0
Comment
Question by:toooki
  • 2
  • 2
4 Comments
 
LVL 14

Accepted Solution

by:
ajexpert earned 500 total points
ID: 34182978


Do you think this link will help?

http://www.oracle-base.com/articles/9i/LDAPFromPLSQL9i.php

BTW I am not sure why are you overwriting the value of retval as
0
 
LVL 14

Expert Comment

by:ajexpert
ID: 34182982
retval := DBMS_LDAP.my_s(my_session, ldap_base, DBMS_LDAP.SCOPE_SUBTREE, my_str, my_attrs, 0, my_message);



-- the above value will be overwritten with --

retval := DBMS_LDAP.count_entries(my_session, my_message);

Open in new window

0
 

Author Comment

by:toooki
ID: 34279454
retval := DBMS_LDAP.count_entries(my_session, my_message);

the above is optional.
0
 

Author Comment

by:toooki
ID: 34634259
It works somehow now.
Thank you.
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Entering a date in Microsoft Access can be tricky. A typo can cause month and day to be shuffled, entering the day only causes an error, as does entering, say, day 31 in June. This article shows how an inputmask supported by code can help the user a…
Let’s list some of the technologies that enable smooth teleworking. 
This video shows, step by step, how to configure Oracle Heterogeneous Services via the Generic Gateway Agent in order to make a connection from an Oracle session and access a remote SQL Server database table.
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now