AD操作的正删改查代码以及遇到的常见问题

 很多在创建用户时,直接要求将用户置为可用,即设置userAccountControl参数,但是此时数据会报错:javax.naming.OperationNotSupportedException: [LDAP: error code 53 - 0000052D: SvcErr: DSID-031A1248, problem 5003 (WILL_NOT_PERFORM), data 0

服务器不执行此操作,需要加入unicodePwd属性,确保正确编码,以下为代码

package com.devops.devopsauth.ad.util;

import com.devops.devopscommon.exception.ServerException;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.*;
import javax.naming.ldap.InitialLdapContext;
import java.util.Hashtable;

/**
 * 工具类,处理AD相关的用户操作
 * 并置为final不允许继承变更
 **/
@Slf4j
@Component
public final class ADUserUtil {

    private DirContext dc = null;
    @Value("${devops.app.ad.root}")
    private String root;
    @Value("${devops.app.ad.adminName}")
    private String adminName;
    @Value("${devops.app.ad.adminPassword}")
    private String adminPassword;
    @Value("${devops.app.ad.ldapURL}")
    private String ldapURL;
    @Value("${devops.app.ad.keystore}")
    private String keystore;

    public void  getDirContext() throws ServerException {
        // ladp的一些配置
        Hashtable env = new Hashtable();
        log.info(keystore);

        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.SECURITY_AUTHENTICATION, "simple");
        env.put(Context.SECURITY_PRINCIPAL, adminName);
        env.put(Context.SECURITY_CREDENTIALS, adminPassword);
        env.put(Context.SECURITY_PROTOCOL, "ssl");
        env.put(Context.PROVIDER_URL, ldapURL);

        try {
            // 初始化ldapcontext
            dc = new InitialLdapContext(env, null);
        }catch (Exception e) {
            log.error("AD域服务连接认证失败",
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值