1

我想用 Java (Eclipse) 在我的活动目录上获取属性。

我找到了这段代码:

Hashtable<String, Object> env = new Hashtable<String, Object>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");

// Authenticate as S. User and password "mysecret"
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, 
        "cn=S. User, ou=NewHires, o=JNDITutorial");
env.put(Context.SECURITY_CREDENTIALS, "mysecret");

// Create the initial context
DirContext ctx = new InitialDirContext(env);

但我从这个开始知道是否有联系:

String ldapUrl = "ldap://"+serverAddress+":389";
//Prepare the environment with the username and password.
Hashtable env = new Hashtable();
DirContext ctx = null;
env.put(Context.SECURITY_PRINCIPAL, DOMAIN+username);
//env.put(Context.SECURITY_PRINCIPAL, username);
env.put(Context.SECURITY_CREDENTIALS, password);

ctx = LdapCtxFactory.getLdapCtxInstance(ldapUrl, env); // To test the connection

那么如何创建 InitialDirContext 呢?我应该为此投入什么env.put(Context.INITIAL_CONTEXT_FACTORY, "?????????")

非常感谢。

4

1 回答 1

0

在您找到的示例中,当您执行以下操作时,连接已建立:

// Create the initial context
DirContext ctx = new InitialDirContext(env);

为此,您需要设置所有必需的环境属性,例如

SECURITY_CREDENTIALS
SECURITY_PRINCIPAL
SECURITY_AUTHENTICATION
PROVIDER_URL
INITIAL_CONTEXT_FACTORY
(possibly others depending on if you have encryption set in your Active Directory)

上下文工厂是 Java 将用来创建该连接的。如果您不指定它,java 将使用默认值com.sun.jndi.ldap.LdapCtxFactory,如果我没记错的话。

于 2013-02-15T17:07:42.613 回答