下面是我的AD认证的解决方案
// active directory authentication
private boolean authenticateByAD(ADServerInfo adServer, String username,
String password) throws DBAccessException {
boolean result = false;
Context ctx = null;
if (adServer != null) {
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
props.put(Context.PROVIDER_URL, "ldap://" + adServer.getIpAddr()
+ ":" + adServer.getPort());
props.put(Context.SECURITY_AUTHENTICATION, "simple");
props.put(Context.SECURITY_PRINCIPAL, username
+ adServer.getDomainName());
props.put(Context.SECURITY_CREDENTIALS, password);
try {
ctx = new InitialLdapContext(props, null);
result = true;
} catch (javax.naming.AuthenticationException e) {
log.info("javax.naming.AuthenticationException");
} catch (NamingException e) {
log.info("NamingException");
}
if (ctx != null) {
try {
ctx.close();
} catch (NamingException e) {
// ignore
}
}
}
return result;
}
我们使用的是LADP认证,ADServerInfo是一个保存AD与信息的对象,包括ip,port 和domainname,username是你公司登陆用户名,password使用登陆密码