java.net.SocketPermission:“connect.resolve”

时间:2013-05-06 06:31:33

标签: java ldap securitymanager

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

1 个答案:

答案 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"

由于