通过远程Active Directory单点登录到Django站点
我为使用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服务器上,另一台Windows计算机上运行Active Directory(实际上有两台不同的AD服务器用于登录人员),所以我不知道REMOTE_USER env变量如何被设置。
用户都使用Windows机器。
这里的魔术字是kerberos认证。
您的用户不会针对您的django应用程序进行身份验证,而是针对您的web服务器进行身份验 您的Intranet可能有一个kerberos服务正在运行,它会为您验证您的用户,并在REMOTE_USER中为您提供用户名,前提是他已通过身份验证。
然后,您可以在LDAP中搜索特定的访问权限,或者拥有一个拥有特殊访问权限的自己的数据库
这里是CentOS的一篇短文。 你的环境看起来很重要,所以我只能向你展示方向;-)
http://wiki.centos.org/HowTos/HttpKerberosAuth
而不是Kerebos,只需使用LDAP:
mod_ldap
和mod_authz_ldap
httpd.conf
添加到您的httpd.conf
<Location />
AuthName "Please enter your SSO credentials."
AuthBasicProvider ldap
AuthType basic
AuthLDAPUrl "ldap://my.activedirectory.com:389/OU=Offices,DC=activedirectory,DC=com?sAMAccountName"
AuthLDAPBindDN "CN=binding_account,OU=Administrators,DC=activedirectory,DC=com"
AuthLDAPBindPassword <binding password>
AuthLDAPBindAuthoritative off
LDAPReferrals off
Require valid-user
</Location>
RemoteUserMiddleware
和RemoteUserBackend
添加到AUTHENTICATION_BACKENDS
。 请注意,启用LDAP后,身份验证将由Apache处理,您的登录如下所示:
有关更详细的答案,请在我的博客上阅读这篇文章
链接地址: http://www.djcxy.com/p/33761.html上一篇: Single sign on to Django site via remote Active Directory
下一篇: LDAP authentication