我想用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, "?????????")
中加入哪些内容?
非常感谢。
答案 0 :(得分: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
,如果我没弄错的话。