【发布时间】:2015-03-10 15:48:18
【问题描述】:
我的问题是我必须将应用程序部署到 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
我搜索了很多,但我找不到任何东西。
【问题讨论】:
-
您是否收到错误消息?
-
@JanTheGun ,我编辑了我的帖子以使用 printStackTrace 添加错误消息。
-
这只是 DNS 故障。您的 Linux 机器可能正在使用它自己的 DNS,它对机器的正确名称有自己的想法。您要对其进行身份验证的特定域控制器可能有一个正确的主机名。但一般不建议使用 LDAP 进行身份验证。 Jespa 是目前在 Java 应用程序中针对 AD 对 Web 客户端进行身份验证的最佳方式。它有自己的 DNS 实现,因此它非常擅长查找域控制器并正确地故障转移到不同的服务器等等。
标签: java linux active-directory ldap