gpt4 book ai didi

java - 使用 unboundid sdk 在 ApacheDS 服务器中搜索组内的用户

转载 作者:行者123 更新时间:2023-12-01 11:29:33 24 4
gpt4 key购买 nike

我使用 ApacheDS 作为目录服务器,使用 UnboundID 作为 LDAP SDK 用于输入用户及其相关组。我正在点击链接

http://ldapwiki.willeke.com/wiki/Tips%20using%20UnboundID%20LDAP%20SDK

其中他们使用了 CompareRequest 方法来确定用户是否是特定组的成员?

我针对此方法编写的代码是这样的

	//input ---- uid = "rohit.joshi" and groupName = "Java"
public boolean isUserMemberOfGroup(String uid, String groupName) {
boolean answ = false;
LDAPConnection connection = connect();
try {
//userDN -- uid=rohit.joshi,ou=users,o=wipro
String userDN = "uid=" + uid + ",ou=users," + LDAP_BASE_DN;
//groupDN -- cn=Java,ou=groups,o=wipro
String groupDN = "cn=" + groupName + ",ou=groups," + LDAP_BASE_DN;
CompareRequest compareRequest = new CompareRequest(userDN, "uniqueMember", groupDN);
CompareResult compareResult = connection.compare(compareRequest);
if (compareResult.compareMatched()) {
// The user is a member of the group.
System.out.println("user is a member of group");
}
else {
// The user is not a member of the group.
System.out.println("user is not a member of group");
}
} catch (LDAPException e) {
e.printStackTrace();
}
return answ;
}

CREATING LDAP CONNECTOR
Connection with LDAP Server Established : true
LDAPException(resultCode=16 (no such attribute), errorMessage='NO_SUCH_ATTRIBUTE: failed for MessageType : COMPARE_REQUEST
Message ID : 1
Compare request
Entry : 'uid=mahesh.joshi,ou=users,o=wipro'
Attribute description : 'uniqueMember'
Attribute value : 'cn=Java,ou=groups,o=wiproorg.apache.directory.api.ldap.model.message.CompareRequestImpl@1d9123e1: null', diagnosticMessage='NO_SUCH_ATTRIBUTE: failed for MessageType : COMPARE_REQUEST
Message ID : 1
Compare request
Entry : 'uid=mahesh.joshi,ou=users,o=wipro'
Attribute description : 'uniqueMember'
Attribute value : 'cn=Java,ou=groups,o=wiproorg.apache.directory.api.ldap.model.message.CompareRequestImpl@1d9123e1: null')
at com.unboundid.ldap.sdk.LDAPConnection.compare(LDAPConnection.java:2236)
at com.LdapServiceImpl.isUserMemberOfGroup(LdapServiceImpl.java:380)
at com.App.main(App.java:102)

但是运行此方法时,我在控制台中收到错误,如上所示。虽然我可以单独检查用户和组是否存在。但是在单个查询操作中检查它们仍然是不可能的。任何这方面的建议都会有很大的帮助。

最佳答案

显然 ApacheDS 中存在“uniqueMember”的“NO_SUCH_ATTRIBUTE”。

LDAPException(resultCode=16 (no such attribute), errorMessage='NO_SUCH_ATTRIBUTE: failed for MessageType : COMPARE_REQUEST
Message ID : 1
Compare request
Entry : 'uid=mahesh.joshi,ou=users,o=wipro'
Attribute description : 'uniqueMember'

尝试使用“member”而不是“uniqueMember”。

工作示例:

public static void main(String[] args)
{
LDAPConnection connection = new LDAPConnection();
try
{
connection.connect("localhost", 10389);
}
catch (LDAPException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
String attributeName = "uniqueMember";
String assertionValue = "uid=mahesh.joshi,ou=users,ou=sevenSeas,dc=example,dc=com";
String entryDN = "cn=Java,ou=groups,ou=sevenSeas,dc=example,dc=com";
CompareRequest compareRequest = new CompareRequest(entryDN, attributeName, assertionValue);
CompareResult compareResult = null;
try
{
compareResult = connection.compare(compareRequest);
if (compareResult.compareMatched())
{
System.out.println("The user: " + assertionValue + " is a member of the group: " + entryDN);
}
else
{
System.out.println("The user: " + assertionValue + " is NOT a member of the group: " + entryDN);
}
}
catch (LDAPException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}

设置一个尽可能接近您的场景的示例。-吉姆

关于java - 使用 unboundid sdk 在 ApacheDS 服务器中搜索组内的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30522061/

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