Я пытаюсь проверить, является ли пользователь членом группы Active Directory, и у меня есть это:
ldap.set_option(ldap.OPT_REFERRALS, 0)
try:
con = ldap.initialize(LDAP_URL)
con.simple_bind_s(userid+"@"+ad_settings.AD_DNS_NAME, password)
ADUser = con.search_ext_s(ad_settings.AD_SEARCH_DN, ldap.SCOPE_SUBTREE, \
"sAMAccountName=%s" % userid, ad_settings.AD_SEARCH_FIELDS)[0][1]
except ldap.LDAPError:
return None
ADUser
возвращает список строк:
{'givenName': ['xxxxx'],
'mail': ['[email protected]'],
'memberOf': ['CN=group1,OU=Projects,OU=Office,OU=company,DC=domain,DC=com',
'CN=group2,OU=Projects,OU=Office,OU=company,DC=domain,DC=com',
'CN=group3,OU=Projects,OU=Office,OU=company,DC=domain,DC=com',
'CN=group4,OU=Projects,OU=Office,OU=company,DC=domain,DC=com'],
'sAMAccountName': ['myloginid'],
'sn': ['Xxxxxxxx']}
Конечно, в реальном мире имена групп многословны и имеют разнообразную структуру, а пользователи могут принадлежать к десяткам или сотням групп.
Если я получу список групп как ADUser.get('memberOf')[0]
, как лучше всего проверить, существуют ли какие-либо члены отдельного списка в основном списке?
Например, контрольный список будет ['group2', 'group16']
, и я хочу получить ответ "истина/ложь" относительно того, существует ли какой-либо меньший список в основном списке.