LDAP/JavaAuth:如何指定工作站?

LDAP/JavaAuth:如何指定工作站?,java,authentication,active-directory,ldap,Java,Authentication,Active Directory,Ldap,我们有一个小型局域网,每个用户都通过Active Directory服务器登录Windows。我希望能够以同样的方式从Java代码对用户进行身份验证。我是这样做的: Hashtable <String, String> env = new Hashtable <>(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER

我们有一个小型局域网,每个用户都通过Active Directory服务器登录Windows。我希望能够以同样的方式从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;
}
在哪里


所以问题是:当设置了用户允许的工作站时,我应该如何在LDAP服务器上对用户进行身份验证?我应该以某种方式将当前工作站传递给LDAP服务器还是什么?

允许的工作站参数在AD inuserWorkstations属性中设置

因此,您可能需要将承载java代码的服务器名称设置为登录用户广告中的userWorkstations属性

有关更多详细信息,请参阅下面的链接

我希望能够以同样的方式从Java代码对用户进行身份验证


然后您需要Kerberos而不是LDAP绑定。

也许您真的不允许在该工作站登录?我使用的登录名/密码与登录Windows时使用的登录名/密码相同(本机,通过相同的ActiveDirectory服务器),因此情况并非如此。
javax.naming.AuthenticationException: [LDAP: error code 49 - ...:
    LdapErr: ...,
    comment: AcceptSecurityContext error,
    data 531,
    ...]