问题标签 [django-auth-ldap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1343 浏览

django - django_auth_ldap - AUTH_LDAP_REQUIRE_GROUP

我正在使用 django_auth_ldap。登录而不检查组工作正常。

但是尝试使用添加到LDAPexample_user组中的用户登录并设置失败。example_groupAUTH_LDAP_REQUIRE_GROUP

设置.py

从日志中:

$ ldapsearch -x -h ldap.example.com b"cn=example_group,cn=groups,dc=example,dc=com"

0 投票
0 回答
1514 浏览

python - 以明文形式进行的 LDAP 身份验证

我使用 django 创建了一个网站,最近添加了指向我们在 LDAP tcp/389 上的活动目录的 ldap 身份验证。问题是 django auth-ldap 以明文形式发送此 ldap 密码数据,并且我尝试验证的 AD 没有为 LDAP tcp/636 设置(我无法控制)所以我​​不能使用命令AUTH_LDAP_START_TLS = True

请参阅下面的脚本是否有任何我可以轻松添加的增强功能/脚本,以继续使用 ldap/389 但增加了安全性(如 kerberos 或 ntlm?)以停止以明文形式发送密码 -

0 投票
1 回答
186 浏览

django - 切换到生产时登录表单停止工作

我正在使用 Wagtail 2.1、Django 1.11.13、django-auth-ldap 1.6.1 和 gunicorn 19.8.1(Nginx 作为代理服务器)。

我创建了两种不同的登录方式,一个 AJAX 视图:

- 一个常规的、非常标准的 Django 登录表单。

我正在使用 LDAP,并使用常规身份验证后端作为备份:

在开发模式下运行我的代码时(通过 manage.py runserver),登录对于两种登录方法都可以正常工作(我可以看到正在验证我的用户的 dlango-ldap 调试消息)。

但是,一旦我使用生产就绪模式(使用 gunicorn、禁用调试、切换到生产设置),我所有的登录请求都会收到 LDAPError:

在验证 bvolchok 时捕获 LDAPError:INVALID_CREDENTIALS({'desc': 'Invalid credentials', 'info': '80090308: LdapErr: DSID-0C09042A, comment: AcceptSecurityContext error, data 52e, v3839'},)

对于 Ajax 视图,打印 request.POST 对象返回与 Django 集成服务器和 Gunicorn 相同的结果:

QueryDict: {'csrfmiddlewaretoken': ['redacted'], 'username': ['redacted'], 'password': ['redacted'], 'next': ['']}>

基本上,我的问题是,在“生产模式”下,login_form.is_valid() 总是 False ......

0 投票
1 回答
99 浏览

django - django_auth_ldap vs postgres db使用django模型

我正在创建一个应用程序,在标准用户模型的帮助下,我将用户存储在 Postgres 数据库中,在我的 Django 应用程序中,我使用 Django 查询来获取所有需要的信息,例如“first_name”、“username”......等

如果需要,我实现了 Django_auth_ldap 以开始将用户标识数据存储在 Openldap 服务器中。但是现在,我对如何获取我以前使用 django 查询获取的数据感到困惑。
我不想改变视图中的行为,我想继续使用 Django 查询

0 投票
1 回答
1114 浏览

django - django-auth-ldap 成员组不工作

我设法让 ldap 身份验证工作,但用户组没有。当用户被验证时,用户名、名字、电子邮件等被复制到会话中,但布尔值(从用户所属的组中获取)不是。

这是我的 settings.py :

这是我的 ldap 方案:

在此处输入图像描述

root 是 active、staff 和 superuser 的一部分。
user1 是活动的一部分。
这就是我从视图中对用户进行身份验证时得到的结果:我收到错误 -> 不是

PS:用户通过身份验证没有问题,但是当我打印user.is_staff时,user.is_activeuser.is_superuser得到False了所有这些。

0 投票
2 回答
225 浏览

python - LDAP 身份验证用户的 DRF 模型权限失败

我正在开发一个基于 DRF 的应用程序,需要 LDAP 身份验证。我遇到了一个问题,我看到直接通过 DRF API 登录的用户和从外部应用程序(即 Curl/Postman)访问它的用户的不同行为。

在应用程序中,一旦登录,我会提供一系列用户可以访问的视图/url,即下面的 url 以查看“示例”:

http://:8000/api/samples

我已经使用自定义权限类将 DjangoModelPermissions 应用于我的示例视图,该视图需要模型权限才能查看模型,即:

根据https://django-auth-ldap.readthedocs.io/en/latest/permissions.html#group-mirroring,我已经使用 AUTH_LDAP_FIND_GROUP_PERMS=true 配置了我的 ldap 设置,并为我关心的 LDAP 组创建了匹配的 DJANGO 组关于 - 我已经为这些组分配了模型权限。这正如我所期望的那样工作 - 只有具有查看列表权限的组成员的用户才能看到它。

我看到的关键问题是,虽然内部 DRF API 正确确定用户权限,但外部登录然后提交 GET 请求的用户被确定为没有查看权限。

我通过一些调试确定原因是来自django_auth_ldap.backend.py的以下代码中的测试失败,该代码从DRF 中的视图调度程序调用,本质上,当我从 DRF API 中的内置访问 URL 时,“hasattr( user, 'ldap_user'):" 返回 true,当我通过邮递员或 curl 等连接时,"hasattr(user, 'ldap_user'):" 返回 false - 显然意味着没有确定存在用户权限。

所以我想最终我的问题是,我应该如何在来自远程端点的 HTTP 操作之间填充/维护 user.ldap_user 属性。(注意我使用的是会话和令牌认证 ATM)。我猜我的问题更多地与在操作之间维护用户 lda_user 属性数据有关,或者能够在每个连续操作中检索它。

0 投票
1 回答
2439 浏览

django - 使用 django-auth-ldap LDAPSearch 搜索两个 OU

我有一个使用 django-auth-ldap 为用户搜索 Active Directory 的容器化应用程序。我想合并来自两个独立 OU 的输出。是否有不同的方法或重载可能需要两个 DN 或连接两个单独搜索的输出的方法?

0 投票
1 回答
986 浏览

python - Django AUTH_LDAP_MIRROR_GROUPS 不工作

我在尝试指示 Django 仅使用 LDAP 集成同步某些组时遇到了一些麻烦。文档本身告诉我:

AUTH_LDAP_MIRROR_GROUPS

...

这也可以是一个列表或其他组名称的集合,在这种情况下,我们将只镜像这些组,而忽略其余的。

ldap_config.py的设置如下:

我的问题是这些组USR-NETBOX-ADM没有与 Django 同步。如果我只设置AUTH_LDAP_MIRROR_GROUPS = True许多组是同步的,我想避免垃圾。

0 投票
0 回答
387 浏览

permissions - LDAP 用户组和 Django 权限之间的权限链接(如果可能,自定义)

再次大家好,

我有一个问题:我成功实现了 django-auth-ldap,LDAP 用户可以成功请求我的 DRF API。但是现在,为了我的项目需求,我必须根据组定义权限。

事实上,我的应用程序中将有 12 个组。根据组的不同,我将授权或不授权用户请求给定的路由,但即使我定义了全局 var AUTH_LDAP_MIRROR_GROUPS = True,并且在我的数据库中看到它们链接到一个组(见捕获):

数据库中的用户

从 LDAP 插入 db thx 到 django-auth_ldap 设置的组

链接到定义的组的用户

但是现在,我还有一些其他问题:我不知道如何根据用户所属的组来实现权限。事实上,如果一个用户属于 ServerAdministrator 组,我想让他访问每个可访问的路由,但我不知道在我的视图中收到的请求中哪里可以看到这个?

据我了解,我应该实现自定义权限,我应该以编程方式在用户对象中编写(应该从 django AbstractUser 继承)

如果是,它是如何工作的?我应该清空我的整个数据库,然后让 django-auth-ldap 插入用户,它还会创建在数据库中定义的给定权限吗?

也许不清楚,如果我可以更准确一些,请不要犹豫。

亲切的问候。

本杰明

0 投票
0 回答
901 浏览

python - Django 中的 AUTH_LDAP_REQUIRE_GROUP 问题

我正在使用 OpenLDAP,我想使用 django_auth_ldap 将它连接到 Django。我尝试了很多选项,但找不到解决方案。

我正在尝试使用添加到 ldap 上的组 test_group 的用户 test_user 登录。当我在没有权限的情况下尝试登录AUTH_LDAP_REQUIRE_GROUP="" and AUTH_LDAP_USER_FLAGS_BY_GROUP ={..} in settings.py 时,出现权限被拒绝错误。

11/Oct/2018 15:58:01] "POST /accounts/login/ HTTP/1.1" 302 0 Forbidden (Permission denied): /events/timeline/ [11/Oct/2018 15:58:02] "GET /events/timeline/ HTTP/1.1" 403 22

但是当我尝试登录时AUTH_LDAP_REQUIRE_GROUP and AUTH_LDAP_USER_FLAGS_BY_GROUP in settings.py,得到这个......

11/Oct/2018 16:03:00] "GET /accounts/login/ HTTP/1.1" 200 1063 [11/Oct/2018 16:03:34] "POST /accounts/login/ HTTP/1.1" 200 1063

设置.py

$ ldapsearch -v -W -x -D "cn=admin,dc=example,dc=com" -p 389 -h ldap.example.com -b "dc=example,dc=com"

视图.py

我错在哪里?我错过了其他属性配置吗?为什么我无法成功登录?

非常感谢您的帮助。