我在连接Active Directory时遇到问题。 有问题的代码如下:
Hashtable<Stirng,String> env = new Hashtable<String,String>();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL,"ldap://192.168.0.100:389");
env.put(Context.SECURITY_AUTHENTICATION,"simple");
env.put(Context.SECURITY_PRINCIPAL,"TEST\\Administrator");
env.put(Context.SECURITY_CREDENTIALS,"password");
LdapContext ctx = new InitialLdapContext(env, null);
当我调试它时,它给了我一个错误:
javax.naming.CommunicationException: 192.168.0.100:389 [Root Exception is java.security.AccessControlException: access denied ("java.net.SocketPermission" "192.168.0.100:389" "connect.resolve")]
我正在尝试连接的IP是192.168.0.99(Windows 7) 192.168.0.100安装在Windows 2008上,当我尝试从192.168.0.100本身连接时,我仔细检查了连接没有任何问题。 你能给我一点建议吗? 如果需要,我很乐意提供更多信息
答案 0 :(得分:2)
我发现了什么问题。 我添加了
grant
{
permission java.net.SocketPermission "*:1024-65535","connect,accept,resolve";
permission java.net.SocketPermission "*:1-1023","connect,resolve";
};
政策文件中的(对我来说是catalina.policy) 然后,我在eclipse中的Arguments of Run配置中添加了一个语句:
-Djava.security.policy="c:\catalina.policy"
由于