Django使用登录的Windows域用户进行身份验证

时间:2014-11-12 07:19:56

标签: python django

我想使用当前登录到计算机的Windows域帐户(活动目录)对django Web用户进行身份验证。如何在不提示用户再次输入用户名/密码的情况下执行此操作,因为他已使用域帐户登录到他的系统。我正在使用django和python 2.7。我按照link进行了操作,但dint了解如何在我的视图中使用它。请帮帮我。

由于

2 个答案:

答案 0 :(得分:8)

当Web服务器(此处为IIS托管的django)负责身份验证时,它通常会设置REMOTE_USER环境变量以在底层应用程序中使用。在Django中,REMOTE_USER在request.META属性中可用。可以将Django配置为使用django.contrib.auth中的REMOTE_USERRemoteUserMiddleware类来使用RemoteUserBackend值。 配置 您必须在django.contrib.auth.middleware.RemoteUserMiddleware

之后将MIDDLEWARE_CLASSES添加到django.contrib.auth.middleware.AuthenticationMiddleware设置
MIDDLEWARE_CLASSES = (
    ...
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.RemoteUserMiddleware',
    ...
    )

接下来,您必须将ModelBackend替换为RemoteUserBackend设置中的AUTHENTICATION_BACKENDS

AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.RemoteUserBackend',
)

通过此设置,RemoteUserMiddleware将检测request.META['REMOTE_USER']中的用户名,并使用RemoteUserBackend对该用户进行身份验证和自动登录。

(更多信息https://docs.djangoproject.com/en/1.5/howto/auth-remote-user/

要在请求中获取REMOTE_USER,请执行以下IIS设置:

1.在“控制面板”中,单击“程序和功能”,然后单击“打开或关闭Windows功能”。

2.展开Internet信息服务,展开万维网服务,展开安全性,然后选择Windows身份验证。

IIS管理器

  1. 打开IIS管理器并导航到您要管理的级别。
  2. 在“功能视图”中,双击“身份验证”。
  3. 在“身份验证”页面上,选择“Windows身份验证”。
  4. 在“操作”窗格中,单击“启用”以使用Windows身份验证。 (More info

答案 1 :(得分:0)

查看此模块 https://pypi.org/project/django-windowsauth/

您可以使用它模块在 IIS 上部署您的 Django 项目并启用 Windows 身份验证。 它还可以处理从 Active Directory 同步额外的用户信息,以及其他一些简洁的功能。