当前位置: 首页 > 面试题库 >

无法从Java与AD建立连接

姚智
2023-03-14
问题内容

我正在尝试从MS AD中检索一些信息:特定分支机构的成员,部门名称,职位等。

我使用了很多示例,包括Apache Directory LDAP
API
和UnboundID,但是我无法与AD建立连接。

RDN:

C:\Users\Aleksey> whoami /fqdn
       CN=my common name here,
       OU=my organization unit here,
       OU=organization unit 2 here,
       OU=organization unit 1 here,
       OU=main organization unit here,
       DC=.my domain here,
       DC=domain 2 here,
       DC=main domain here

为了进行搜索,我使用以下过滤器:

public class LdapRetriever {
    public static void main (String[] args) {
        Hashtable env = new Hashtable();

        env.put(Context.INITIAL_CONTEXT_FACTORY, 
            "com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.PROVIDER_URL, "ldap://" + 
            "ip of domain controller here" + ":389");
        env.put(Context.SECURITY_AUTHENTICATION, "simple");
        // Also I try to use the following SECURITY_PRINCIPAL: 
        // my login only, my domain\ my login
        env.put(Context.SECURITY_PRINCIPAL, "my login here" + "@" + 
            "my domain here.domain 2 here.main domain here");
        env.put(Context.SECURITY_CREDENTIALS, "my password here");

        try {           
            DirContext ctx = new InitialLdapContext(env,null);
            String returnedAtts[]={"sn","title","department","givenName"};

            SearchControls searchCtls = new SearchControls();  
            searchCtls.setReturningAttributes(returnedAtts);  
            searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);

            String searchFilter = "(&(objectClass=user)(cn=*))";
            String searchBase = 
                "DC=my domain here,DC=domain 2 here,DC=main domain here";

            NamingEnumeration answer = ctx.search(searchBase, 
                searchFilter, searchCtls);
            ...

当我使用中的数据创建目录上下文时,env出现异常:

Exception in thread "main" javax.naming.AuthenticationException: 
[LDAP: error code 49 - 80090308: LdapErr: DSID-0C090334, comment:
AcceptSecurityContext error, data 531, vece

如果未指定密码,则会出现以下异常:

Problem searching directory: 
javax.naming.NamingException:[LDAP:error code 1 - 00000000: 
LdapErr: DSID-0C090627, comment: 
In order to perform this operation a successful bind must be completed 
on the connection., data 0, vece]; remaining name 
'DC=my domain here,DC=domain 2 here,DC=main domain here'

我已验证我的帐户未锁定。

根据常见的活动目录LDAP绑定错误列表:

525​  user not found ​
52e​  invalid credentials ​
530​  not permitted to logon at this time​
531​  not permitted to logon at this workstation​
532​  password expired ​
533​  account disabled ​
701​  account expired ​
773​  user must reset password ​
775​  user account locked

就我而言,这意味着:“不允许在此工作站上登录”,但是使用相同的凭据可以登录到域。

可能是什么原因?


问题答案:

错误代码531最有可能与AD的配置有关。在某些情况下,用户只能从一个工作站(例如您的工作PC)登录。
这是在用户的 userWorkstations 字段中配置的。
如果您无法使用RDP登录到AD,则需要您的AD管理员来检查此字段的帐户,并且AD Server包含在 userWorkstations中,
或者该字段已完全删除。



 类似资料:
  • 我在docker中运行了elasticsearch 8.1,其中包含以下docker compose文件: 我正在尝试使用org.elasticsearch.client.RestClient向es集群发出一个简单的GET请求。 请求: Rest客户端初始化: 主要方法: buildClusterHosts()方法正确地构建了一个HttpHost数组(在本例中只有一个),并将其提供给rest客户端

  • 你好在我的代码它打破了我的请求,我尝试了几次,但1-2小时后bot状态不再改变。 我在ftp服务器上托管这些文件。 以后从未检索到任务异常:异常=ConnectionError(MaxRetryError(“HTTPConnectionPool(host='username.mydomain',port=80”):url超过最大重试次数:/project/total_visit/count.txt

  • 我有一个docker compose,它包含Keyclope和Mailhog。我在keydeport中配置了Mailhog,但它不起作用。我在Powershell中试过MailHog,它很管用。有人能帮我找出它为什么不起作用吗? KeyClope上的Mailhog配置步骤: 首先我添加当前Keycloak用户的电子邮件地址(master@test.com)。 然后我像下面这样配置电子邮件 当我点击

  • 问题内容: 我在尝试使用以下代码获取数据库连接时遇到问题: 输出的错误信息是: / usr / lib / jvm / java-6-openjdk / bin / java -Didea.launcher.port = 7532 -Didea.launcher.bin.path = / usr / bin / idea / bin -Dfile.encoding = UTF-8-类路径/usr/

  • 在使用PHP 5.6.3在Ubuntu 14.04上克隆存储库后,我无法运行PHP composer。phar selfupdate都不是php composer。phar更新。我收到以下消息: 我认为问题应该出在我本地拥有的证书上,但我无法想象如何解决它。 这是作曲家。json:

  • 我发现自己在一个工作,我必须与Windows服务器(2012)-我从来没有问题与建立DB连接,但现在我似乎没有找到任何正确的解决方案。 我将向您展示我的连接php代码: 这是我在浏览器中得到的结果: SQLSTATE[HY000][2002]是一家大型计算机公司。 翻译成英文: 无法建立连接,因为目标机器主动拒绝它。 注意:我下载了mssql驱动程序和sqlsrv驱动程序,并将它们解压缩到/ext