当前位置: 首页 > 知识库问答 >
问题:

通过Spring LDAP更改Active Directory密码

姜俊民
2023-03-14
public void changePassword()
{
    LdapContextSource contextSource = new LdapContextSource();
    contextSource.setUrl("LDAPS://X.Y.Z.T/");
    contextSource.setBase("DC=example,DC=com");
    contextSource.setUserDn("username@example.com");
    contextSource.setPassword("oldpass");
    contextSource.afterPropertiesSet();

    LdapTemplate ldapTemplate = new LdapTemplate(contextSource);

    byte[] li_byOldpass = encodePassword("oldpass");
    byte[] li_byNewpass = encodePassword("newpass");

    Attribute oldattr = new BasicAttribute("unicodePwd", li_byOldpass);
    Attribute newattr = new BasicAttribute("unicodePwd", li_byNewpass);
    ModificationItem olditem = new   ModificationItem(DirContext.REMOVE_ATTRIBUTE, oldattr);
    ModificationItem newitem = new ModificationItem(DirContext.ADD_ATTRIBUTE, newattr);
    ModificationItem repitem = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, newattr);

    ModificationItem[] mods = new ModificationItem[2];
    mods[0] = olditem;
    mods[1] = newitem;

    try
    {
        ldapTemplate.modifyAttributes("CN=Name Surname,OU=Office,DC=example,DC=com", new ModificationItem[] { repitem });   
    }catch(Exception e)
    {
       System.out.println("Error in changing password on Active Directory: " + e.getMessage() );
    }
}

共有1个答案

彭鸿彩
2023-03-14

这个答案是给后人的

查看此链接:http://www.baeldung.com/spring-ldap

代码举例

    @Autowired
    private LdapTemplate ldapTemplate;

    private static final String BASE_DN = "OU=Metaverse";

    protected void buildDn(UserAd user) {
        Name dn = LdapNameBuilder.newInstance(BASE_DN)
            .add("OU", "Orga_Unit")
            .add("OU", "Orga_Unit")
            .add("CN", "ldap_cn").build();

        DirContextAdapter context = new DirContextAdapter(dn);

        context.setAttributeValues(
           "objectclass", 
           new String[] 
           { "top", 
             "person", 
             "organizationalPerson"});
        context.setAttributeValue("sn", "CREATETEST");
        context.setAttributeValue("userPassword","password");

        ldapTemplate.bind(context);
    }
 类似资料:
  • 问题内容: 我们的IT环境中有许多Red Hat Linux服务器。我的团队成员要求我编写一个脚本(最好是Shell脚本)以使用SSH一次更改每个用户的密码。 我试图找到一种解决方案,但是我发现许多脚本都在使用Expect。我们没有在服务器上安装Expect,系统管理员拒绝让我们安装它。此外,用户没有root访问权限,从而或无法使用。 有什么方法可以编写脚本,以便用户可以运行该脚本并更改列表中所有

  • 我们目前使用Azure Key vault来存储某些秘密,但是现在我们要进入现场,我们需要能够使用Azure管道来更改连接的密钥vault。我无法确定一个整洁的方式通过管道做到这一点,有人有任何建议吗? 谢谢

  • 问题内容: 我目前有一个密钥库,其中只有我应该知道的特定密码。现在,我需要将对该密钥库的访问权授予其他人,因此我想: 1)更改密码,以便我可以与他人共享该密码并让他们签名 2)创建一个不同的密码并允许他们使用它进行签名。 这可能吗?以及-如果是-怎么样? 问题答案: 密钥库只有一个密码。您可以使用keytool进行更改: 要更改密钥的密码:

  • 问题内容: 该代码不起作用 问题答案: JavaScript区分大小写。 因此,如果要更改字体大小,则必须执行以下操作:

  • 我需要有关如何更改通过DocuSign向收件人发送电子邮件时显示的名称的帮助。我使用的是REST API,我复制了DocuSign的一个示例。我可以更改电子邮件主题,但我不知道top如何更改电子邮件正文中的[名称]。下面是一个如何更改电子邮件主题的示例。我正在使用c#Web开发。 这些是我想改变的,任何有[名字的东西]: [姓名]通过docusign 提前谢谢你。