java通过ldap访问AD

w_wind 2013-10-17 11:09:39
需要用域用户名和密码登陆项目,这个需要使用ladp访问AD进行验证,大概代码网上很多但没有试成。
public class Dmoe3 {
public static void main(String[] args) {
String userName = "test@xxx.com"; // 用户名称
String password = "123123"; // 密码
String host = "192.168.0.1"; // AD服务器
String port = "389"; // 端口
String url = new String("ldap://" + host + ":" + port);
Hashtable env = new Hashtable();
DirContext ctx;
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, userName);
env.put(Context.SECURITY_CREDENTIALS, password);
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, url);
try {
ctx = new InitialDirContext(env);
ctx.close();
System.out.println("验证成功!");
} catch (NamingException err) {
err.printStackTrace();
System.out.println("验证失败!");
}
}
}

public class Demo2 {
public LdapContext getConnectionFromFool() throws NamingException {
String keystore = "D:/soft02/JDK/jre/lib/security/cacerts";
System.setProperty("javax.net.ssl.trustStore", keystore);
Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://192.168.0.1:389");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL,"cn=test@domain.com");
env.put(Context.SECURITY_PRINCIPAL,"cn=administrator,cn=Users,dc=all,dc=com");
env.put(Context.SECURITY_CREDENTIALS, "123123");
env.put(Context.SECURITY_PROTOCOL, "ssl");
env.put("com.sun.jndi.ldap.connect.pool", "true");
env.put("java.naming.referral", "follow");
InitialLdapContext dcx = null;
dcx = new InitialLdapContext(env, null);
return dcx;
}

}


这两段代码都报javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1异常。我估计是证书不正确或env.put(Context.SECURITY_PRINCIPAL,"cn=administrator,cn=Users,dc=all,dc=com"); 这个写法不正确。不知道怎么弄了,谁做过的看看啊!
...全文
448 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
stealth9 2014-12-16
  • 打赏
  • 举报
回复
用户名/密码错误
  • 打赏
  • 举报
回复
楼主,方便加Q,咨询些LDAP的问题不!
jake512 2013-11-07
  • 打赏
  • 举报
回复
我也在弄LDAP感觉都要疯了。
w_wind 2013-10-17
  • 打赏
  • 举报
回复
如果用ldapjdk.jar的话就报Exception in thread "main" netscape.ldap.LDAPException: error result (49); 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1
w_wind 2013-10-17
  • 打赏
  • 举报
回复
引用 1 楼 java2000_net 的回复:
v1db1是啥东西???
异常信息里的
老紫竹 2013-10-17
  • 打赏
  • 举报
回复
v1db1是啥东西???

67,513

社区成员

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

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