查询用户密码,使用LDAP安装应用程序

问题描述 投票:0回答:1

我想使用LDAP将一个应用程序远程部署到活动目录服务器中DOMAIN CONTROLLER下的所有主机上。我可以使用下面的代码片段来获取所有主机的详细信息。

searchFilter = (&(objectCategory=computer)(objectClass=computer))";

然后,我尝试用JAVA代码来获取用户的密码,但代码返回的密码属性为空。

 String filter = "(&(objectclass=person))";
   results = dirContext.search("", filter, controls);

      while (results.hasMore()) {
        SearchResult searchResult = (SearchResult) results.next();
        Attributes attributes = searchResult.getAttributes();

        NamingEnumeration<? extends Attribute> attrs = attributes.getAll();

        while (attrs.hasMore()) {
          System.out.println(attrs.next());
        }


        Attribute pwd = attributes.get("userPassword");
        if(pwd==null)
        {
            System.out.println("NullPointerException thrown!");
        }
        else 
        {
            System.out.println("=> userPassword : " + new String((byte[])pwd.get()));
        }

请问我的方法是正确的吗,还是有其他方法可以为一个DC下的所有主机部署一个应用程序?

java active-directory spring-ldap ldap-query
1个回答
0
投票

微软活动目录不会返回密码,密码是加密的,通常在一个名为unicodePwd的属性中。(与 用户密码)


0
投票

userPassword 属性其实只是真正的密码属性的一个稍微容易使用的同义词,也就是 unicodePwd. 但这两个属性只用于修改或重置密码。文件中的 unicodePwd 说。

unicodePwd属性永远不会被LDAP搜索返回。

所以你不能做你试图做的事情。

任何一个好的认证系统都应该这样工作。

© www.soinside.com 2019 - 2024. All rights reserved.