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

标签 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 设置 你的 friend 在这里吗?查看此处的文档:

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

但我不明白 LDAP_AUTH_CLEAN_USER_DATA 和 LDAP_AUTH_SYNC_USER_RELATIONS 是如何工作的,因为没有实现它的示例。

最佳答案

作者确认这是正确的做法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)

关于python - 如何使用 django-python3-ldap 从 Active Directory 组在 Django 模型中创建组和权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44194897/

相关文章:

python - 如何在 Python 3 上安装 Django?

python - 如何使用paste()重叠两个或多个图像?

python - 如果我想在 Ubuntu 上将 Python 2 与 Django 一起使用,如何安装 Python 3

python - Django + GAE(谷歌应用引擎): most convenient path for a beginner?

java - JSOUP-JSP登录: Blank cookie

python - 在 matplotlib 的箱线图函数中更改 mustache 的末端代表什么

Python OpenCV : Returning cvBridge Image from ROS

django - 在docker-compose break run中使用network_mode ='host':主机类型网络不能与链接一起使用

android - Android 应用程序中的系统身份验证

javascript - 谷歌登录 : Permission denied to generate login hint for target domain (javascript web app)