2013-03-15 2 views
3

Я Тринг, чтобы получить список групп пользователь является членом, в настоящее время я могу получить большинство атрибутов следующим образомКак получить атрибут memberOf от Ldap DirContextOperations

CustomLdapUserDetails.Essence essence = new CustomLdapUserDetails.Essence(); 
essence.setDn(dn); 
Object passwordValue = ctx.getObjectAttribute(passwordAttributeName); 
String givennameValue = (String)ctx.getObjectAttribute("givenname"); 
String snValue = (String)ctx.getObjectAttribute("sn"); 
String titleValue = (String)ctx.getObjectAttribute("title"); 
essence.setFirstname(givennameValue); 
essence.setLastname(snValue); 

, но я не могу понять, как получите атрибут memberOf. Если я выходной весь DirContextOperations как строку я получаю следующее

org.springframework.ldap.core.DirContextAdapter: dn=uid=emp123 {rdn=uid=emp123, 
whenCreated=20110816063203.0Z, 
objectCategory=CN=fompanyPerson,CN=Schema,CN=Configuration,CN={9F17F445-56C4-42D9- 
B7C6-B630FFEA7F07}, badPwdCount=0, otherTelephone=123-456789, businessUnit=IREIRE BU, 
ntAccount=DMN1\emp123, managerID=emp987, objectGUID=5? 
?e6A??????/, [email protected], uid=emp123, companyWorkRelationship=EMP, 
memberOf[0]=CN=ABC IREIRE,OU=AutoGroups,DC=entdir,DC=gtn,DC=com, 
memberOf[1]=CN=azgEntJazzUsers,OU=AutoGroups,DC=entdir,DC=gtn,DC=com, companySite=DBL, 
companyCostCenter=91827, companyBusinessGroup=IREIRE BG, ntDomain=DMN1, instanceType=4, 
corpID=emp123, objectSid= I???&?C?k?J???????, st=XX, badPasswordTime=0, vdejoindn=P- 
ENTDIRXXX-1:uid=emp123,DC=entdirXXX,DC=gtn,DC=com, companySourceSystem=C-WORKSYSTEM, 
objectClass[0]=top, objectClass[1]=person, objectClass[2]=organizationalPerson, 
objectClass[3]=user, objectClass[4]=inetOrgPerson, objectClass[5]=fompanyPerson, 
company=ABC DEV, name=emp123, sn=Smith, exchangeAlias=emp123, telephoneNumber=1-987-6543, 
ntDomainRelative=DMN1, uSNChanged=999111, physicalDeliveryOfficeName=DXI, 
ntAccountRelative=DMN1\emp123, cn=Smith, John, exchangeServer=someServer, 
documentumUserName=Smith JOHN emp123, title=SOFTWARE ENGINEER/DEVELOPER, 
[email protected], msDS-UserAccountDisabled=TRUE, 
managerName=Bloggs, Joe, givenName=John, uSNCreated=18418957, displayName=Smith, John, 
pwdLastSet=629579433359695509, fompanyPersonStatus=A, whenChanged=20120266070711.0Z, 
o=IREIRE BU, distinguishedName=uid=emp123,DC=entdirXXX,DC=gtn,DC=com, eDARevoke=N, 
division=SEF-GL , manager=uid=emp987,DC=entdirXXX,DC=gtn,DC=com, 
exchangeDirectory=SMXZG1DB, samAccountName=emp123, sametimeServer=cvxcluster} 

Что мне нужно, чтобы получить это значение CN каждого memberOf в массив строк, я попытался:

ctx.getObjectAttribute("memberOf[1]")) 
ctx.getObjectAttribute("memberOf")) 
ctx.getObjectAttribute("memberOf=CN")) 

I «Я видел примеры онлайн-настроек, но я не мог найти примеров получения, действительно ли это намного сложнее, чем получение других атрибутов?

Любые советы будут оценены

ответ

6

Вы, вероятно, только пропустить одну «S» с конца. Попробуйте:

ctx.getObjectAttributes("memberOf") 

Javadoc уточняет, что разница между методом singular и plural формы. (Первый возвращает только первое значение, даже если данный атрибут многозначен.)

+0

Я получил массив объектов после применения выше решения. Теперь я хочу проанализировать этот объект String, чтобы получить группу аутентифицированного пользователя, что мне делать? Должен ли я разбирать строку или есть ли какая-либо утилита LDAP, которая может дать мне аутентифицированную группу пользователей? Я становлюсь ниже String Array. сп = админ, сп = пользователи, CN = пример, сп = орг сп = team1, сп = пользователи, сп = пример, сп = орг сп = team2, CN = пользователи, сп = пример, сп = орг Из вышесказанного видно, что аутентифицированный пользователь входит в 3 группы: admin, team1, team2 – ved

0

Используете ли вы Active Directory в качестве поставщика LDAP? Не все поставщики LDAP имеют атрибут memberOF для пользователя.

Правильный метод, чтобы получить группы пользователь будет искать группы для фильтра, как:

(member=<fully distinguished name of user>) 

Вернувшиеся атрибут «CN».

+0

Это только «правильный» *, если * нет атрибута 'memberOf'. В противном случае он во много раз медленнее и, следовательно, совершенно не подходит. – EJP

Смежные вопросы