1

各ユーザーが Active Directory サーバー経由で Wi​​ndows にログインする小さな LAN があります。同じ方法で Java コードからユーザーを認証できるようにしたいと考えています。私は次の方法でこれを行っていました:

Hashtable <String, String> env = new Hashtable <>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://192.168.0.1:389");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "user1");
env.put(Context.SECURITY_CREDENTIALS, "pass1"));
env.put(Context.REFERRAL, "ignore");
try {
    new InitialDirContext(env).close();
    return true;
} catch (AuthenticationException ex) {
    return false;
}

user1pass1ユーザー認証情報でした。

ローカル管理者が各ユーザーに許可されたワークステーションのリストを明示的に設定してアクセスを制限するまで、それはうまくいきました。現在、ユーザーは引き続き Windows にログインできますが、私のコード (許可されたワークステーションで実行) は、

javax.naming.AuthenticationException: [LDAP: error code 49 - ...:
    LdapErr: ...,
    comment: AcceptSecurityContext error,
    data 531,
    ...]

ここで、「data 531」は「このワークステーションでのログオンは許可されていません」を意味します

問題は、ユーザーの許可されたワークステーションが設定されている場合、LDAP サーバーでユーザーをどのように認証する必要があるかということです。どうにかして現在のワークステーションを LDAP サーバーに渡す必要がありますか?

4

2 に答える 2