【问题标题】:django-auth-ldap AUTH_LDAP_FIND_GROUPS_PERMS not workingdjango-auth-ldap AUTH_LDAP_FIND_GROUPS_PERMS 不工作
【发布时间】:2017-05-09 03:55:09
【问题描述】:

我正在运行 Django 1.8.18 和 django-auth-ldap 1.2.11 针对 Active Directory 进行身份验证。

我当前的配置正确地针对 AD 进行身份验证,但是,当我启用 AUTH_LDAP_FIND_GROUPS_PERMS 时,它似乎没有做任何事情。我之前尝试过AUTH_LDAP_MIRROR_GROUPS(没有任何问题),发现所有用户组都已创建。唯一的小问题是它还会删除用户拥有的任何本地组成员身份。

无论如何,在AUTH_LDAP_MIRROR_GROUPS 自动创建组后,我希望AUTH_LDAP_FIND_GROUPS_PERMS 会在下次登录时自动将用户添加到同一组。然而,这并没有发生。配置的唯一变化是那两条线。 AUTH_LDAP_GROUP_TYPE 设置为 NestedActiveDirectoryGroupType()

有什么想法为什么没有将用户添加到名称匹配的组中?

【问题讨论】:

    标签: python django ldap django-auth-ldap


    【解决方案1】:

    事实证明,AUTH_LDAP_FIND_GROUPS_PERMS 实际上并没有将用户添加到组中,而是实际上将它们添加到组中,以确保他们的权限响应就像他们在与名称匹配的组中一样。

    【讨论】:

    • 非常感谢!调试起来真的很混乱,因为验证事情是否有效的唯一方法不是查看 组成员身份 是否已建立的直观方式,而是查看 权限是否已建立的间接方式已被授予.
    【解决方案2】:

    我怀疑您使用的是AUTH_LDAP_GROUP_TYPE。我也在使用这个库,并让它同步组/成员资格。这是我为库设置的完整转储:

    AUTH_LDAP_START_TLS = True
    AUTH_LDAP_SERVER_URI = 'xxxx'
    AUTH_LDAP_GLOBAL_OPTIONS = {
        ldap.OPT_X_TLS_REQUIRE_CERT: ldap.OPT_X_TLS_NEVER
    }
    AUTH_LDAP_BIND_DN = 'yyyy'
    AUTH_LDAP_BIND_PASSWORD = 'zzzz'
    AUTH_LDAP_USER_SEARCH = LDAPSearchUnion(
        LDAPSearch(
            'OU=OurCorp,DC=foo,DC=bar,DC=com',
            ldap.SCOPE_SUBTREE,
            filterstr='(uid=%(user)s)'
        ),
    )
    
    AUTH_LDAP_USER_ATTR_MAP = {
        "first_name": "givenName",
        "last_name": "sn",
        "email": "mail",
    }
    
    AUTH_LDAP_GROUP_TYPE = ActiveDirectoryGroupType()
    AUTH_LDAP_GROUP_SEARCH = LDAPSearch(
        'OU=Security Groups,OU=Users and Groups,OU=OurCorp,DC=foo,DC=bar,DC=com',
        ldap.SCOPE_SUBTREE,
        '(objectClass=group)'
    )
    AUTH_LDAP_MIRROR_GROUPS = True
    
    AUTH_LDAP_USER_FLAGS_BY_GROUP = {
        'is_staff': [  # Allow login to the Django admin site
            'CN=Our-Staff-Group,OU=Security Groups,OU=Users and Groups,OU=OurCorp,DC=foo,DC=bar,DC=com',
        ],
        'is_superuser': [  # Implicitly grant ALL permissions to members of these groups
            'CN=Our-Superuser-Group,OU=Security Groups,OU=Users and Groups,OU=OurCorp,DC=foo,DC=bar,DC=com'
        ],
    }
    

    正如我所提到的,我认为 AUTH_LDAP_GROUP_TYPE 可能是您的问题,但这可能取决于您自己的 AD 设置。

    【讨论】:

    • 啊,我想通了——我认为AUTH_LDAP_FIND_GROUPS_PERMS 会将用户添加到相关组中。相反,它只是在组中创建一个虚拟成员资格,以响应与组一致的权限检查。
    • 我遇到了同样的问题,您的解决方案确实有效。谢谢:-)
    猜你喜欢
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多