如何使用django-python3-ldap从Active Directory组创建Django模型中的组和权限?

时间:2017-05-26 06:19:36

标签: python django authentication active-directory ldap

我在django中创建了两个组。我创建了billing_users和billing_admins。我在ldap,internalBilling-admin和internalBilling-users中也有两组用户。

我目前正在使用django-python3-ldap身份验证。但我必须登录Django并手动将用户设置为is_staff和is_superuser,以允许用户登录管理员默认的管理控制台。另外,我必须将它们分配给它们所属的组。

问题1: 有没有办法让我可以根据它们所属的Django组自动设置标志?

问题2: 有没有办法让我可以让Active Directory用户的组设置Django组使用django-python3-ldap在适当的Django组中设置用户?

作者陈述如下:

LDAP_AUTH_CLEAN_USER_DATA和LDAP_AUTH_SYNC_USER_RELATIONS设置 你的朋友在这里。在这里查看文档:

https://github.com/etianen/django-python3-ldap#available-settings

但我不明白LDAP_AUTH_CLEAN_USER_DATA和LDAP_AUTH_SYNC_USER_RELATIONS如何工作,因为没有实施的例子。

1 个答案:

答案 0 :(得分:2)

作者确认这是执行此操作的正确方法https://github.com/etianen/django-python3-ldap/issues/74#issuecomment-304396431

def sync_all_user_group_relations(user, data):

    ldap_groups = list(data.get('memberOf', ()))
    for group in ldap_groups:
        if group == 'CN=InternalBilling-Users,OU=ABC-Users,OU=Groups,DC=abc,DC=abc,DC=com':
            g = Group.objects.get(name='Billing clerks')
            user.is_staff=True
            user.save()
            g.user_set.add(user)
        elif group == 'CN=InternalBilling-Admin,OU=ABC-Users,OU=Groups,DC=abc,DC=abc,DC=com':
            g = Group.objects.get(name='Billing admins')
            user.is_staff=True
            user.save()
            g.user_set.add(user)