使用AD作为Django的身份验证

Tec*_*ard 27 python django ldap active-directory

我正在企业环境中开发基于Django的应用程序,并希望使用现有的Active Directory系统来验证用户(因此他们没有获得另一个登录/密码组合).我还想继续使用Django的用户授权/权限系统来管理用户功能.

有没有人有这方面的好例子?

Jef*_*uer 10

这是另一个更新的片段(2008年7月,2015年12月更新):

通过SSL对Active Directory(LDAP)进行身份验证


dgo*_*sen 10

Jeff提供的链接确实有效,但它假设您有一个默认组,其中添加了用户.我简单地换了:

group=Group.objects.get(pk=1)
Run Code Online (Sandbox Code Playgroud)

通过

group,created=Group.objects.get_or_create(name="everyone")
Run Code Online (Sandbox Code Playgroud)

如果您想要更紧密的集成和更多功能,还有django-auth-ldap,它可以让您更好地控制ldap用户/组如何映射到django用户/组.

为了调试ldap连接,我发现这篇博文很有用,特别是用ldap-utils测试ldap连接的命令:

ldapsearch -H ldaps://ldap-x.companygroup.local:636 -D "CN=Something LDAP,OU=Random Group,DC=companygroup,DC=local" -w "p4ssw0rd" -v -d 1
Run Code Online (Sandbox Code Playgroud)

如果您正在使用ssl,那么获取证书的问题也会很好.您可以从服务器中提取它,也可以按照这些说明生成自己的指令.


lpf*_*eau 5

那个怎么样?你试过那个吗?

http://www.djangosnippets.org/snippets/501/


sus*_*erg 5

我遇到了同样的问题,并注意到django-auth-ldap根本不支持SASL->如果TSL不可用,则通过连接提供纯文本密码。

这是我为该问题所做的事情:https : //github.com/susundberg/django-auth-ldap-ad


par*_*ing 5

您可以对django-auth-ldap后端进行子类化,以使用 SASL 或 Kerberos 等添加 AD 功能。这是在 Django 2.1 中运行的 2018 年示例:

https://partofthething.com/thoughts/authenticating-and-populate-users-in-django-using-a-windows-active-directory-and-sasl/