python - 通过远程 Active Directory 单点登录到 Django 站点

标签 python django windows active-directory single-sign-on

我使用 Django 为客户开发了一个 Intranet。用户通过 Active Directory 登录到他们的计算机。目前,我通过标准 Django contrib.auth 登录它们,并通过自定义登录后端使用 Active Directory。

我希望用户能够通过他们现有的 Active Directory 登录使用 SSO 以自动登录到 Django 站点。

我知道这应该通过 REMOTE_USER ( https://docs.djangoproject.com/en/dev/howto/auth-remote-user/ ) 来完成,但是文档说:“Web 服务器在哪里设置 REMOTE_USER 环境变量”。这假设 Django 站点和身份验证服务器在同一台服务器上,不是吗?

在我的例子中,Django 站点在 Linux + Apache 服务器上运行,而 Active Directory 在另一台 Windows 机器上运行(实际上我们使用 2 个不同的 AD 服务器来登录),所以我不知道 REMOTE_USER环境变量将被设置。

用户都在使用 Windows 机器。

最佳答案

这里的魔法词是 kerberos 身份验证。

您的用户不会针对您的 Django 应用程序进行身份验证,而是针对您的网络服务器进行身份验证。您的 Intranet 可能正在运行 kerberos 服务,它会为您验证您的用户身份,如果他通过身份验证,只会在 REMOTE_USER 中为您提供一个用户名。

然后您可以在 LDAP 中搜索特定的访问权限,或者拥有一个具有特殊访问权限的自己的数据库。

这是一篇来自 CentOS 的短文。你的环境看起来很重要,所以我能做的就是给你指明方向;-)

http://wiki.centos.org/HowTos/HttpKerberosAuth

关于python - 通过远程 Active Directory 单点登录到 Django 站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26895377/

相关文章:

python - 如何编写Xpath进行动态值传递?

python - 值错误 : too many values to unpack (expected 2) in Django

python - Django - 无法显示媒体文件夹内的文件夹中的图像

windows - 在 windbg 中进行内核调试时无法获得完整的用户模式堆栈跟踪

windows - 为什么引入粘滞键?

C++ 多线程执行速度变慢

python - 将 LetsEncrypt/Certbot 与 Django 开发服务器一起使用?

python - 将包含长列表的 Pandas df 保存为 csv 文件

mysql - South - 将 django 应用程序从 sqlite 迁移到 mysql

python - 函数调用后记住数组值