Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Query LDAP via Oracle Pl/sql

Posted on 2010-11-20
4
Medium Priority
?
2,339 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 2000 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

Moving data to the cloud? Find out if you’re ready

Before moving to the cloud, it is important to carefully define your db needs, plan for the migration & understand prod. environment. This wp explains how to define what you need from a cloud provider, plan for the migration & what putting a cloud solution into practice entails.

Question has a verified solution.

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

Recently, Microsoft released a best-practice guide for securing Active Directory. It's a whopping 300+ pages long. Those of us tasked with securing our company’s databases and systems would, ideally, have time to devote to learning the ins and outs…
In this blog post, we’ll look at how using thread_statistics can cause high memory usage.
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.
This video shows how to copy an entire tablespace from one database to another database using Transportable Tablespace functionality.

670 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