0

我在连接 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 本身连接时,我仔细检查了连接没有任何问题。你能给我一点建议吗?如果需要,我很乐意提供更多信息

4

1 回答 1

2

我发现出了什么问题。我添加了

grant
{
    permission java.net.SocketPermission "*:1024-65535","connect,accept,resolve";
    permission java.net.SocketPermission "*:1-1023","connect,resolve";
};

在策略文件中(对我来说是 catalina.policy)然后,我在 eclipse 的运行配置参数中添加了一条语句:

-Djava.security.policy="c:\catalina.policy"

谢谢

于 2013-05-06T07:12:47.637 回答