书上的添加一个ldap项目的例子,结果报错:javax.naming.AuthenticationException

fxbird 2006-04-16 08:02:14
一个是实现了DirContext接口的Person类,代码实在太长,请见http://blog.sina.com.cn/u/491fec8d0100032m,另一个是添加到ldap中的项目的程序:
package test;

import java.util.*;
import javax.naming.*;
import javax.naming.directory.*;
public class JNDIAdd {

// Initial context implementation
public static String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory";
public static String MY_HOST = "ldap://localhost:389";
public static String MGR_DN = "uid=kvaughan, ou=People, o=airius.com";
public static String MGR_PW = "bribery";
public static String MY_SEARCHBASE = "o=Airius.com";

//public static String MY_BASE = "ou=people,o=airius.com";
//public static String MY_DN = "uid=mewilcox";

public static void main(String args[]) {
try {

// Hashtable for environmental information
Hashtable env = new Hashtable();

// Specify which class to use for our JNDI provider
env.put(Context.INITIAL_CONTEXT_FACTORY, INITCTX);

// Specify host and port to use for directory service
env.put(Context.PROVIDER_URL, MY_HOST);
env.put(Context.SECURITY_AUTHENTICATION,"simple");
env.put(Context.SECURITY_PRINCIPAL,MGR_DN);
env.put(Context.SECURITY_CREDENTIALS,MGR_PW);

// Get a reference to a directory context
DirContext ctx = new InitialDirContext(env);
Person p = new Person("mewilcox","Mark","Wilcox","ou=Accounting","mewilcox@airius.com");

ctx.bind("uid=mewilcox,ou=People,o=airius.com", p);

} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}
一运行报这样的错误:
javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials]
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:2988)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2934)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2735)
at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2649)
at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:290)
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:175)
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:193)
at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:136)
at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:66)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243)
at javax.naming.InitialContext.init(InitialContext.java:219)
at javax.naming.InitialContext.<init>(InitialContext.java:195)
at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:80)
at test.JNDIAdd.main(JNDIAdd.java:74)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.intellij.rt.execution.application.AppMain.main(Unknown Source)
顺便问一下,什么ldap的服务器适合于学习时用,而且符合标准,netscape的directory server没有二进制代码下载,有源代码,还要一步步编译,麻烦死了,sun的下载页面进不去,我下载了一个2.2.29的openldap,不知这个怎么样啊。
...全文
1050 8 点赞 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lzjadam 2006-09-25
说明你的LDAP没用运行,或者无法与之建立连接
  • 打赏
  • 举报
回复
fxbird 2006-04-21
last ding,j2ee版有没有高手?我看是没有了。
  • 打赏
  • 举报
回复
fxbird 2006-04-20
ding
  • 打赏
  • 举报
回复
fxbird 2006-04-19
ding
  • 打赏
  • 举报
回复
theoffspring 2006-04-18
  • 打赏
  • 举报
回复
fxbird 2006-04-17
靠,没有一个会的吗
  • 打赏
  • 举报
回复
fxbird 2006-04-17
ding
  • 打赏
  • 举报
回复
dp_555 2006-04-17
友情接分。。。
  • 打赏
  • 举报
回复
相关推荐
发帖
Java EE
加入

6.7w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
帖子事件
创建了帖子
2006-04-16 08:02
社区公告
暂无公告