DECLARE
SSL_WALLET_AUTH VARCHAR2(256) := '*******************';
SSL_WALLET_LOC VARCHAR2(256) := 'file:/opt/oracle/walletloc/subfolder';
AD_SERVER VARCHAR2(256) := 'server.someaddress.edu';
AD_BASE VARCHAR2(256) := 'DC=something,DC=edu';
AD_PORT NUMBER := 636;
AD_USERNAME VARCHAR2(400) := 'DOMAIN\username';
AD_PASSWORD VARCHAR2(100) := '*******************';
SESSN DBMS_LDAP.SESSION;
MYRETVAL PLS_INTEGER;
MYMESSAGE DBMS_LDAP.MESSAGE;
MA DBMS_LDAP.MOD_ARRAY;
MAN NUMBER := 1; -- current number of attributes to populate
DN VARCHAR2(300);
NEW_ATTR_VAL_COL DBMS_LDAP.STRING_COLLECTION;
ATTRIBUTE_TO_CHANGE VARCHAR2(1000);
BEGIN
DN := 'CN=Lname\, fname,CN=Users,DC=something,DC=edu'; --distinguishedName from AD
ATTRIBUTE_TO_CHANGE := 'department';
NEW_ATTR_VAL_COL(1) := 'Network Ops';
DBMS_LDAP.USE_EXCEPTION := TRUE;
SESSN := DBMS_LDAP.INIT(AD_SERVER, AD_PORT); -- start LDAP session
MYRETVAL := DBMS_LDAP.OPEN_SSL(SESSN, SSL_WALLET_LOC, SSL_WALLET_AUTH, 2); --open ssl channel
MYRETVAL := DBMS_LDAP.SIMPLE_BIND_S(SESSN, AD_USERNAME, AD_PASSWORD); -- bind auth as user
MA := DBMS_LDAP.CREATE_MOD_ARRAY(MAN);
DBMS_LDAP.POPULATE_MOD_ARRAY(MODPTR => MA, MOD_OP => DBMS_LDAP.MOD_REPLACE, MOD_TYPE => ATTRIBUTE_TO_CHANGE, MODVAL => NEW_ATTR_VAL_COL);
-- actual modification occurs here
MYRETVAL := DBMS_LDAP.MODIFY_S(SESSN, DN, MA);
DBMS_LDAP.FREE_MOD_ARRAY(MA);
MYRETVAL := DBMS_LDAP.UNBIND_S(SESSN);
EXCEPTION
WHEN OTHERS THEN
MYRETVAL := DBMS_LDAP.UNBIND_S(SESSN);
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
A blog to help me remember what in the hell i've done and what not to do again. ever. Maybe you'll learn from my mistakes or epiphanies. Blog topics include SQL, T-SQL, Google, Windows, Visual Basic, Python, C#, etc.
Wednesday, July 28, 2010
Modify AD from PL/SQL
Here is how we connect to and modify our Active Directory @ my current place of business using PL/SQL. Our setup is Oracle 11gR1/RHEL.
Subscribe to:
Post Comments (Atom)
Hello,
ReplyDeletevery useful information. I have allmost the same task to do. Could you tell me how you created sertificates and added them in oracle wallet?