我使用 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 的短文。你的环境看起来很重要,所以我能做的就是给你指明方向;-)
关于python - 通过远程 Active Directory 单点登录到 Django 站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26895377/