Solved

Query LDAP via Oracle Pl/sql

Posted on 2010-11-20
4
2,224 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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

Enroll in June's Course of the Month

June’s Course of the Month is now available! Experts Exchange’s Premium Members, Team Accounts, and Qualified Experts have access to a complimentary course each month as part of their membership—an extra way to sharpen your skills and increase training.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A company’s centralized system that manages user data, security, and distributed resources is often a focus of criminal attention. Active Directory (AD) is no exception. In truth, it’s even more likely to be targeted due to the number of companies …
Recently I was talking with Tim Sharp, one of my colleagues from our Technical Account Manager team about MongoDB’s scalability. While doing some quick training with some of the Percona team, Tim brought something to my attention...
This video explains what a user managed backup is and shows how to take one, providing a couple of simple example scripts.
This is a high-level webinar that covers the history of enterprise open source database use. It addresses both the advantages companies see in using open source database technologies, as well as the fears and reservations they might have. In this…

734 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