Java 如何通过LDAP将userWorkstation传递到Active Directory进行登录?
关于这个问题的类似问题 我有一个产品,它使用LDAP处理客户端的用户身份验证。客户端计算机不直接针对Active Directory进行身份验证。产品服务器处理登录请求,代表该用户直接针对LDAP进行身份验证。问题是一个客户在Active Directory中打开了用户工作站白名单。由于LDAP请求来自产品服务器,而不是客户机,因此无法通过用户工作站检查。下面是我尝试将用户工作站值作为环境变量传递的代码,但它在客户的环境中不起作用。如何正确传递Active Directory的属性 部分代码片段:Java 如何通过LDAP将userWorkstation传递到Active Directory进行登录?,java,active-directory,ldap,Java,Active Directory,Ldap,关于这个问题的类似问题 我有一个产品,它使用LDAP处理客户端的用户身份验证。客户端计算机不直接针对Active Directory进行身份验证。产品服务器处理登录请求,代表该用户直接针对LDAP进行身份验证。问题是一个客户在Active Directory中打开了用户工作站白名单。由于LDAP请求来自产品服务器,而不是客户机,因此无法通过用户工作站检查。下面是我尝试将用户工作站值作为环境变量传递的代码,但它在客户的环境中不起作用。如何正确传递Active Directory的属性 部分代码
env.put(Context.REFERRAL, "follow");
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, url);
env.put(Context.SECURITY_AUTHENTICATION, authentication);
// Specify the Security Protocol
if (!protocol.equals(""))
env.put(Context.SECURITY_PROTOCOL, protocol);
// Use whatever was passed to us
env.put(Context.SECURITY_PRINCIPAL, dn);
env.put(Context.SECURITY_CREDENTIALS, password);
String userWorkstations = "test.example.com";
env.put("userWorkstations", userWorkstations);
env.put("User-Workstations", userWorkstations);
log.info(String.format(
"Found property server.ldap.user.workstations. Adding value %s to the LDAP context.",
userWorkstations));
log.info("Context dump: " + env);
// Get a reference to a directory context
dirContext = new InitialDirContext(env);
我也试图解决这个问题,但得出的结论是,这没有任何意义 如果能够发送用户的工作站名称,则可以在每台计算机上进行身份验证 我认为您的解决方案是将运行服务器软件的计算机的名称添加到active directory中每个参与用户的“登录到”列表中