OID/OIM is an implementation of LDAP. Java acess it by JNDL. (Actually, it has C API to access it as well.)
1. Put the jar file into the class path.
Oracle\Middleware\jdeveloper\modules\oracle.ldap_11.1.1\ldapjclnt11.jar
Oracle\Middleware\jdeveloper\modules\oracle.ldap_11.1.1\ldapjclnt11.jar
2. Connecting method 1
import oracle.ldap.util.jndi
import javax.naming.*;
public static void main(String args[])
{
try{
InitialDirContext ctx = ConnectionUtil.getDefaultDirCtx(args[0], // host
args[1], // port
args[2], // DN
args[3]; // password)
// Do work
}
catch(NamingException ne)
{
// javax.naming.NamingException is thrown when an error occurs
}
}
import javax.naming.*;
public static void main(String args[])
{
try{
InitialDirContext ctx = ConnectionUtil.getDefaultDirCtx(args[0], // host
args[1], // port
args[2], // DN
args[3]; // password)
// Do work
}
catch(NamingException ne)
{
// javax.naming.NamingException is thrown when an error occurs
}
}
3. Connecting method 2
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.InitialDirContext;
import oracle.ldap.util.Group;
import oracle.ldap.util.RootOracleContext;
import oracle.ldap.util.Subscriber;
import oracle.ldap.util.User;
import oracle.ldap.util.Util;
import oracle.ldap.util.UtilException;
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, contextfactory);
//oracle.ldap.util.jndi.LDAPJSSESocketFactoryImpl.class
//oracle.ldap.util.jndi.LDAPTLSSocketFactoryImpl.class
env.put(Context.PROVIDER_URL, url);
env.put(Context.SECURITY_PRINCIPAL, principal);
env.put(Context.SECURITY_CREDENTIALS, pwd);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
InitialDirContext ctx = new InitialDirContext(env);
RootOracleContext roc = new RootOracleContext(ctx);
Subscriber myRealm = roc.getSubscriber(ctx, Util.IDTYPE_DEFAULT, null, new String[] { "*" });
Group oneGroup = myRealm.getGroup(ctx, Util.IDTYPE_SIMPLE, groupName, new String[] { "*" });
User myUser = myRealm.getUser(ctx, Util.IDTYPE_SIMPLE, userId, new String[] { "*" });
String userDN = myUser.getDN(ctx);
//oneGroup.isMember(ctx, myUser, false));
//oneGroup.addUniquemember(ctx, userDN);
//.....................................
import javax.naming.NamingException;
import javax.naming.directory.InitialDirContext;
import oracle.ldap.util.Group;
import oracle.ldap.util.RootOracleContext;
import oracle.ldap.util.Subscriber;
import oracle.ldap.util.User;
import oracle.ldap.util.Util;
import oracle.ldap.util.UtilException;
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, contextfactory);
//oracle.ldap.util.jndi.LDAPJSSESocketFactoryImpl.class
//oracle.ldap.util.jndi.LDAPTLSSocketFactoryImpl.class
env.put(Context.PROVIDER_URL, url);
env.put(Context.SECURITY_PRINCIPAL, principal);
env.put(Context.SECURITY_CREDENTIALS, pwd);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
InitialDirContext ctx = new InitialDirContext(env);
RootOracleContext roc = new RootOracleContext(ctx);
Subscriber myRealm = roc.getSubscriber(ctx, Util.IDTYPE_DEFAULT, null, new String[] { "*" });
Group oneGroup = myRealm.getGroup(ctx, Util.IDTYPE_SIMPLE, groupName, new String[] { "*" });
User myUser = myRealm.getUser(ctx, Util.IDTYPE_SIMPLE, userId, new String[] { "*" });
String userDN = myUser.getDN(ctx);
//oneGroup.isMember(ctx, myUser, false));
//oneGroup.addUniquemember(ctx, userDN);
//.....................................
转载于:https://blog.51cto.com/robertleepeak/197280