AD域账户登录mysql,有玩过LDAP的大牛吗?本人现在要从AD域里读出来里边的用户加到本人的数据库里,然后把本人数据库里的用户名和密...

以下是本人的代码还有错误信息

String userName = “administrator”; // 用户名称

String password = “123.com”; // 密码

String host = “192.168.10.10”; // AD服务器

String port = “389”; // 端口

String domain = “@vdidomain.user.com”; // 邮箱的后缀名

String url = new String(“ldap://” + host + “:” + port);

String user = userName.indexOf(domain) > 0 ? userName : userName + domain;

Hashtable env = new Hashtable();

DirContext ctx;

env.put(Context.SECURITY_AUTHENTICATION, “simple”);

env.put(Context.SECURITY_PRINCIPAL, user); // 不带邮箱后缀名的话,会报错,具体原因还未探究。高手可以解释分享。

env.put(Context.SECURITY_CREDENTIALS, password);

env.put(Context.INITIAL_CONTEXT_FACTORY,”com.sun.jndi.ldap.LdapCtxFactory”);

env.put(Context.PROVIDER_URL, url);

try {

ctx = new InitialLdapContext(env, null);

Attributes attrs = new BasicAttributes(true);

Attribute objclass = new BasicAttribute(“objectclass”);

// 添加ObjectClass

String[] attrObjectClassPerson = { “inetOrgPerson”, “organizationalPerson”, “person”, “top” };

Arrays.sort(attrObjectClassPerson);

for (String ocp : attrObjectClassPerson) {

objclass.add(ocp);

}

attrs.put(objclass);

String uid = “zhangsan”;

//CN=ceshi,CN=Users,DC=vdidomain,DC=user,DC=com

//”cn=Users,dc=vpn,dc=redcross,dc=org,dc=com”

String userDN = “uid=” + uid + “,” + “CN=Users,DC=vdidomain,DC=user,DC=com”;

// 密码处理

attrs.put(“cn”, uid);

attrs.put(“sn”, uid);

attrs.put(“displayName”, “张三”);

attrs.put(“mail”, “”);

attrs.put(“description”, “”);

attrs.put(“userPassword”, “password”);

ctx.createSubcontext(userDN, attrs);

System.err.println(“成功”);

错误信息:javax.naming.directory.InvalidAttributeValueException: [LDAP: error code 21 – 00000057: LdapErr: DSID-0C090D11, comment: Error in attribute conversion operation, data 0, v23f0  remaining name “”uid=zhangsan,CN=Users,DC=vdidomain,DC=user,DC=com””

at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3100)

at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:3033)

at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2840)

at com.sun.jndi.ldap.LdapCtx.c_createSubcontext(LdapCtx.java:811)

at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_createSubcontext(ComponentDirContext.java:337)

at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.createSubcontext(PartialCompositeDirContext.java:266)

at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.createSubcontext(PartialCompositeDirContext.java:254)

at javax.naming.directory.InitialDirContext.createSubcontext(InitialDirContext.java:197)

at com.chinaops.web.edesktop.test.LDAPTest3.main(LDAPTest3.java:62)

Throw Exception : javax.naming.directory.InvalidAttributeValueException: [LDAP: error code 21 – 00000057: LdapErr: DSID-0C090D11, comment: Error in attribute conversion operation, data 0, v23f0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值