我想使用当前登录到计算机的Windows域帐户(活动目录)对django Web用户进行身份验证。如何在不提示用户再次输入用户名/密码的情况下执行此操作,因为他已使用域帐户登录到他的系统。我正在使用django和python 2.7。我按照link进行了操作,但dint了解如何在我的视图中使用它。请帮帮我。
由于
答案 0 :(得分:8)
当Web服务器(此处为IIS托管的django)负责身份验证时,它通常会设置REMOTE_USER
环境变量以在底层应用程序中使用。在Django中,REMOTE_USER
在request.META属性中可用。可以将Django配置为使用django.contrib.auth中的REMOTE_USER
和RemoteUserMiddleware
类来使用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 :(得分:0)
查看此模块 https://pypi.org/project/django-windowsauth/
您可以使用它模块在 IIS 上部署您的 Django 项目并启用 Windows 身份验证。 它还可以处理从 Active Directory 同步额外的用户信息,以及其他一些简洁的功能。