के माध्यम से एडी जानकारी तक पहुंचने के लिए spring-ldap-core-2.3.1.RELEASE.jar
JDK 1.8
& Tomcat 8.0
पर उपयोग कर रहा हूं। title
, department
& company
जैसे गुण ldapTemplate.search(..,.,..)
विधि द्वारा वापस नहीं लौटाए जा रहे हैं।वसंत एलडीएपी के LdapTemplate शीर्षक, विभाग और कंपनी विशेषताओं को वापस क्यों नहीं करता है?
मैं कोड के निम्नलिखित लाइनों खोज करने के लिए उपयोग कर रहा हूँ: - ADUserAttributesMapper
वर्ग
LdapQuery ldapQuery = LdapQueryBuilder.query()
.where("objectclass").is("user")
.and("objectcategory").is("person")
.and("cn").like(strWildcardText+"*");
ldapTemplate.search(ldapQuery, new ADUserAttributesMapper());
निम्नलिखित है: -
public class ADUserAttributesMapper implements AttributesMapper<ADUserBean> {
@Override
public ADUserBean mapFromAttributes(Attributes attributes) throws NamingException {
if(attributes==null) {
return null;
}
adUserBean.setName((attributes.get("name")!=null) ? attributes.get("name").get().toString() : null);
adUserBean.setCommonName((attributes.get("cn")!=null) ? attributes.get("cn").get().toString() : null);
adUserBean.setDisplayName((attributes.get("displayname")!=null) ? attributes.get("displayname").get().toString() : null);
adUserBean.setGivenName((attributes.get("givenname")!=null) ? attributes.get("givenname").get().toString() : null); // for FIRST NAME
adUserBean.setMiddleName((attributes.get("initials")!=null) ? attributes.get("initials").get().toString() : null); // for MIDDLE NAME/INITIALS
adUserBean.setLastName((attributes.get("sn")!=null) ? attributes.get("sn").get().toString() : null); // for LAST NAME
adUserBean.setDepartment((attributes.get("department")!=null) ? attributes.get("department").get().toString() : null);
adUserBean.setUserPrincipalName((attributes.get("userprincipalname")!=null) ? attributes.get("userprincipalname").get().toString() : null); // Logon Name
adUserBean.setsAMAccountName((attributes.get("samaccountname")!=null) ? attributes.get("samaccountname").get().toString() : null); // Logon Name (pre-Windows 2000)
adUserBean.setDistinguishedName((attributes.get("distinguishedname")!=null) ? attributes.get("distinguishedname").get().toString() : null);
adUserBean.setMailID((attributes.get("mail")!=null) ? attributes.get("mail").get().toString() : null);
adUserBean.setTitle((attributes.get("title")!=null) ? attributes.get("title").get().toString() : null); // Job Title
adUserBean.setTelephoneNumber((attributes.get("telephonenumber")!=null) ? attributes.get("telephonenumber").get().toString() : null);
adUserBean.setObjectCategory((attributes.get("objectcategory")!=null) ? attributes.get("objectcategory").get().toString() : null);
return adUserBean;
}
}
title
, department
& company
विशेषताओं संगठन से संबंध रखते हैं एडी उपयोगकर्ता गुणों का टैब नीचे दी गई छवि में दिखाया गया है: -
इसके अलावा, जनरल टैब से संक्षिप्त नाम (जैसे initials
) विशेषता वसंत-एलडीएपी के ldapTemplate
द्वारा उठाया जा रहा है/सूचीबद्ध। LdapQueryBuilder.query()
ऑब्जेक्ट की attributes(...)
विधि तक पहुंच है जो प्राप्त करने वाले नामों की एक स्ट्रिंग सरणी लेती है। लेकिन उन्हें स्पष्ट रूप से उल्लेख करने के बाद भी, initials
, title
, department
& company
जैसे गुणों के लिए मान वापस नहीं आये हैं।
ग्रहण आईडीई के भीतर एलडीएपी ब्राउज़र प्लगइन एक समस्या के बिना title
, department
& company
संगठन टैब के अंतर्गत गुण सूचीबद्ध करता है।
भी com4j
एपीआई title
, department
& company
गुण देता है।
क्या कोई विन्यास है जो विशेषता (ओं) सूची को सीमित कर रहा है या क्या यह स्प्रिंग-एलडीएपी एपीआई के साथ ही सीमित है? क्या ये गुण BasicAttributes
का हिस्सा नहीं हैं? स्प्रिंग-एलडीएपी के माध्यम से इन विशेषताओं को कैसे लाया जाए?
अद्यतन (01-Aug-2017): सादा जावा JNDI दृष्टिकोण/कोड department
, company
, title
विशेषताओं वापसी नहीं करता है (यहां तक कि इन विशेषताओं को स्पष्ट रूप से गुण स्ट्रिंग सरणी में उल्लेख किया जा रहा के साथ), लेकिन आश्चर्यजनक रूप से यह initials
विशेषता मान वापस करता है।
अद्यतन (02-Aug-2017): @ पियरे के सुझाव (नीचे) निम्नलिखित कोड SearchControls
वस्तु उपयोग करने की कोशिश करने के लिए समान: -
String strFilter= "(&(objectclass=top)(cn=cgma*))";
String[] attrs = new String[] {"cn","givenName","sn","initials","title","department","company"};
long maxResults = 10; // for example
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
searchControls.setReturningAttributes(attrs);
searchControls.setCountLimit(maxResults);
List<String> aLstOfADUsers = ldapTemplate.search("",strFilter,searchControls,new AttributesMapper<String>()
{
public String mapFromAttributes(Attributes attrs) throws NamingException {
try
{
System.out.println(attrs.toString());
return attrs.get("cn").get().toString();
}
catch(Exception ex) {
ex.printStackTrace();
return null;
}
}
});
return aLstOfADUsers;
यहां तक कि इस नहीं है वापसी initials
, title
, company
& department
विशेषता मान।
हाय रयान, प्रतिक्रिया के लिए thanx। यहां, 'ADUserAttributesMapper' एक कक्षा है जो 'org.springframework.ldap.core.AttributesMapper' इंटरफ़ेस लागू करती है। यह जावा POJO बीन के गुणों में प्राप्त गुणों को मानचित्र करता है। क्या यह एलडीएपी क्वेरी खोज से लौटाए गए गुणों की संख्या को सीमित करता है? क्या कोई अन्य मैपर है? – Shiva
क्या आप इस कार्यान्वयन को शामिल करने के लिए अपना प्रश्न अपडेट कर सकते हैं? – ryan2049