我正在使用以下 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 目录服务器。