我正在使用以下java代码来验证LDAP用户。如果对象存在指定的用户名和密码,则会成功。但是,我没有在用户上看到任何允许我激活/停用用户的属性。具体来说,我只想在用户上设置一个属性,这会使身份验证失败,而不会实际删除整个对象。
这可以直接完成,还是需要编写单独的代码来加载用户并检查字段是标记为活动还是非活动?
public static boolean authenticate(String url, String securityAuthentication, String securityPrincipal, String usernameKey, String username, String password) {
try {
Hashtable env = new Hashtable();
env.put(InitialContext.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(InitialContext.PROVIDER_URL, url);
env.put(InitialContext.SECURITY_AUTHENTICATION, securityAuthentication);
env.put(InitialContext.SECURITY_PRINCIPAL, usernameKey +"="+ username + securityPrincipal);
env.put(InitialContext.SECURITY_CREDENTIALS, password );
// Create the initial context
DirContext ctx = new InitialDirContext(env);
return true;
} catch (NamingException e) {
return false;
}
}
编辑:我被告知,我们有一个是活动目录,另一个是389 Directory Server。