我们在进行内部管理系统时,往往需要根据电脑域的账号来进行登陆控制。java在使用域账号登陆的时是使用到javax.naming.*来进行的,使用ldap协议。
具体代码如下:
public static boolean check(String userName, String password) {
String host = "ad.xxx.com"; // AD服务器IP
String port = "389"; // 端口
String url = new String("ldap://" + host + ":" + port);
String user = String.format("%s@xxx.com", userName);
Hashtable<String, Object> env = new Hashtable<String, Object>();
env.put(Context.SECURITY_AUTHENTICATION, "simple");//一种模式,不用管,就这么写就可以了
env.put(Context.SECURITY_PRINCIPAL, user);
env.put(Context.SECURITY_CREDENTIALS, password);
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, url);
DirContext ctx = null;
try {
ctx = new InitialDirContext(env);
return Boolean.TRUE;
} catch (Exception err) {
return Boolean.FALSE;
} finally {
try {
if (ctx != null) {
ctx.close();
}
} catch (NamingException e) {
e.printStackTrace();
}
}
}