Java 如何通过LDAP将userWorkstation传递到Active Directory进行登录?

Java 如何通过LDAP将userWorkstation传递到Active Directory进行登录?,java,active-directory,ldap,Java,Active Directory,Ldap,关于这个问题的类似问题 我有一个产品,它使用LDAP处理客户端的用户身份验证。客户端计算机不直接针对Active Directory进行身份验证。产品服务器处理登录请求,代表该用户直接针对LDAP进行身份验证。问题是一个客户在Active Directory中打开了用户工作站白名单。由于LDAP请求来自产品服务器,而不是客户机,因此无法通过用户工作站检查。下面是我尝试将用户工作站值作为环境变量传递的代码,但它在客户的环境中不起作用。如何正确传递Active Directory的属性 部分代码

关于这个问题的类似问题

我有一个产品,它使用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中每个参与用户的“登录到”列表中