ldap 用户验证失败,在线等急急急!!!

gussie 2010-05-22 11:11:24
验证代码如下:
String account = "Manager"; //binddn
String password = "pwd"; //bindpwd
String root = "dc=scut,dc=com"; // root
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389/" + root);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn="+account+","+root );
env.put(Context.SECURITY_CREDENTIALS, password);
try {
// 链接ldap
ctx = new InitialDirContext(env);
System.out.println("认证成功");
} catch (javax.naming.AuthenticationException e) {
System.out.println("认证失败");
} catch (Exception e) {
System.out.println("认证出错:");
e.printStackTrace();
}

运行之后总是报ldap:49用户找不到的错误,
如果把env.put(Context.SECURITY_PRINCIPAL, "cn="+account+","+root );
env.put(Context.SECURITY_CREDENTIALS, password);注释掉就能通过匿名验证,这是什么原因?请高手指点。
...全文
354 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
niuniu20008 2011-10-10
  • 打赏
  • 举报
回复
"cn="+account+","+root 是不是这得问题
crowson 2011-10-10
  • 打赏
  • 举报
回复
env.put(Context.SECURITY_PRINCIPAL, "cn="+account+","+root );

这句改成env.put(Context.SECURITY_PRINCIPAL, account );

你有赢了.
2010-05-22
  • 打赏
  • 举报
回复
貌似是中文的。
colin_pxx 2010-05-22
  • 打赏
  • 举报
回复
你那逗号是不是英文状态下的啊

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧