栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring LdapTemplate创建AD账户时创建密码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring LdapTemplate创建AD账户时创建密码

        微软的AD服务器实现了Ldap协议,可以通过Ldap协议来访问AD服务器。AD服务器有两个端口,一个是389,一个是636。端口389是普通端口,可以用来查询,也可以用来创建和更新账户信息,但不能创建和更新密码。AD账户的密码操作需要通过636这个加密端口来执行。

        通过636端口访问AD服务器时需要加密证书,所以要先从AD服务器生成密钥证书。注意需要导出两个证书,分别是域根证书和计算机证书。使用要java工具将证书导入到创建的密钥库中就可以在代码中使用了。

        LdapTemplate配置代码如下:

@Configuration
public class LdapConfig {

    @Value("${keystore_url}")
    private String keystoneURL;

    @Bean
    @ConfigurationProperties("spring.ldap")
    public LdapProperties ldapProperties() {
        return new LdapProperties();
    }

    @Bean
    @Primary
    public LdapTemplate getLdapTemplate() {
        System.setProperty("com.sun.jndi.ldap.object.disableEndpointIdentification", "true");
        System.setProperty("javax.net.ssl.trustStore", keystoneURL);
        System.setProperty("javax.net.ssl.trustStorePassword", "12345.com");

        LdapProperties properties = ldapProperties();
        // 普通ldap连接使用普通的Context配置
        LdapContextSource contextSource = new SSLLdapContextSource();
        String url = properties.getUrls()[0];

        contextSource.setUserDn(properties.getUsername());
        contextSource.setPassword(properties.getPassword());
        contextSource.setUrl(url);
        contextSource.setBase(properties.getBase());
        contextSource.setAnonymousReadOnly(false);
        contextSource.setPooled(false);
        contextSource.afterPropertiesSet();

        LdapTemplate ldapTemplate = new LdapTemplate(contextSource);
        ldapTemplate.setIgnorePartialResultException(true);
        return ldapTemplate;
    }
}

期中keystore_url是密钥库所在目录。

在创建AD账户时的注意事项:

1、BasicAttribute ocAttr = new BasicAttribute("objectclass");
            ocAttr.add("top");
            ocAttr.add("person");
            ocAttr.add("organizationalPerson");
            ocAttr.add("user");// 上面几个objectclass是固定的,如果层级更深的话不知道是什么状况
            Attributes attrs = new BasicAttributes(true);
            attrs.put(ocAttr);// 必须有baseattribute

这段代码基本是固定的

2、注意空值

3、attrs.put("pwdLastSet", "0"); 设置首次登录修改密码

4、String newQuotedPassword = """ + user.getPassword() + """;
      byte[] newUnicodePassword = newQuotedPassword.getBytes("UTF-16LE");
      attrs.put("unicodePwd", newUnicodePassword);

      以上代码创建密码

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017119.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号