gpt4 book ai didi

java - 无法在 Java 中使用 Ldap 将用户添加到组

转载 作者:行者123 更新时间:2023-12-01 13:36:03 24 4
gpt4 key购买 nike

我刚开始使用 Java 的 Ldap API,我想将用户添加到组中,但总是失败。

我使用此代码将特定用户添加到特定组:

private void insertUserToGroup(List<DistinguishedName> memberOf, DistinguishedName newUserDN) {
try
{
// Loop all groups to put the user in.
for(DistinguishedName groupDn : memberOf) {

String encodedGroupDn = groupDn.encode(); // Example: "cn=GROUP_SKL, ou=roles"
String encodedUserDn = newUserDN.encode(); // Example: "cn=user_dfh, ou=external"

// Now. Add user to a group.
ModificationItem member[] = new ModificationItem[1];
member[0] = new ModificationItem(DirContext.ADD_ATTRIBUTE, new BasicAttribute("member", encodedUserDn));
ldapTemplate.modifyAttributes(encodedGroupDn, member);
}
} catch ( InvalidAttributeValueException exc ) {
throw exc;
} catch ( NameAlreadyBoundException exc ) {
throw exc;
} catch ( NameNotFoundException exc ) {
throw exc;
} catch (Exception exc) {
throw exc;
}
}

输入参数是组和用户的列表,您可以在示例注释中看到 DistinguishedName 的外观。

1. 当我运行 ldapTemplate.modifyAttributes(encodedGroupDn, member); 时出现异常是:

org.springframework.ldap.NameNotFoundException:[LDAP:错误代码 32 - 00000525:NameErr:DSID-031A11CC,问题 2001 (NO_OBJECT),数据 0,最佳匹配: ”];

嵌套异常为 javax.naming.NameNotFoundException:[LDAP:错误代码 32 - 00000525:NameErr:DSID-031A11CC,问题 2001 (NO_OBJECT),数据 0,最佳匹配: ”];

剩余名称“cn=GROUP_SKL, ou=roles”

2. 我尝试使用“description”、“company”等其他属性运行modifyAttributes(...),并且该属性适用于组和用户,但不适用于属性“member”。

3.所以问题是。它期望什么名字?专有名称错误吗?或者这种将用户添加到组的方式完全错误吗?还是我遗漏了一些细节?

最佳答案

现在我发现了错误。

我所需要的只是使用用户 DN 的完整地址。所以我认为该组的“成员”属性必须具有完整的地址。所以两个 DN 现在看起来都是这样的:

encodedGroupDn = "cn=GROUP_SKL, ou=角色"

encodedUserDn = "cn=user_dfh, ou=external, ou=main, dc=nr, dc=company, dc=local"

这有效!

关于java - 无法在 Java 中使用 Ldap 将用户添加到组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21263789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com