今天看代码看到登陆时使用了AD域验证的方式来验证用户名密码,故学习记录一下。
AD域是用来集中管理用户的,比如我们电脑上就有一个域设置,他可以用来设置我们的电脑允许和不允许的操作,比如不能安装乱七八糟软件什么的。只需要在域控制器上进行一道设置,就可以批量管理许多用户的设置,十分便捷。至于用AD域来验证登陆,就是我们的程序并不知道任何用户名密码,也不保存,每次登录时将用户名密码送到AD域校验一下就OK了。
看下代码:
public boolean ADsUserCA(String username,String password) {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, INITCTX); //驱动
env.put(Context.PROVIDER_URL, LDAP_HOST); //主机地址和端口
env.put(Context.SECURITY_AUTHENTICATION, "simple"); // 使用简单认证来认证用户
env.put(Context.SECURITY_PRINCIPAL, username);
env.put(Context.SECURITY_CREDENTIALS, password);
try {
ctx = new InitialDirContext(env);
try {
ctx.close();
System.out.println("CA OK");
} catch (NamingException ex) {
ex.printStackTrace();