次の 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;
}
}
編集: 1 つはアクティブ ディレクトリで、もう 1 つは 389 Directory Server であると言われています。