Java - 使用 linux 访问远程活动目录

Java - Access to remote active directory with linux

我的问题是我必须将应用程序部署到 linux 服务器上。身份验证基于远程活动目录。一切正常,但由于我已部署到 linux 服务器,我的身份验证不再有效。

这是我的验证码:

public boolean connectUser(String login, String password) {



    Hashtable env = new Hashtable();
        env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, HOST);

    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, login+"@nazoos.com");
    env.put(Context.SECURITY_CREDENTIALS, password);

    // Create the initial context
    try {
        DirContext ctx = new InitialDirContext(env);
        Log.getLogger().debug("UserService : Connexion ==> OK ");
        return true;

    } catch (NamingException e) {

        Log.getLogger().debug("UserService : Erreur Connexion :"+e.getMessage());
        return false;

    }


}

这是我的错误

Caused by: java.net.UnknownHostException: nazoos.com
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at java.net.Socket.connect(Socket.java:528)
    at java.net.Socket.<init>(Socket.java:425)
    at java.net.Socket.<init>(Socket.java:208)
    at com.sun.jndi.ldap.Connection.createSocket(Connection.java:368)
    at com.sun.jndi.ldap.Connection.<init>(Connection.java:203)
    ... 54 more

我找了很多,但我找不到任何东西。

  1. HOST 变量的格式应为 ldap://<IP_or_hostname>:389
  2. 如果您使用主机名,那么您应该检查它是否可以从您的 linux 服务器解析为 IP 地址。也许您需要将此主机名添加到服务器主机文件中。