prod envirounment上的django + ldap3错误

时间:2015-12-08 14:56:33

标签: python django ldap

请帮助,我有下一期。 我有通过外部MS AD服务器进行ldap认证的django 1.8(python 3.3.5,centos 7)app。在我的本地开发环境中,一切正常,并且可以在应用程序中进行授权,但在使用Apache服务器迁移到prod之后,它将失败并拒绝错误权限。 我正在使用ldap3和django-python3-ldap https://github.com/etianen/django-python3-ldap

错误:

DAPSocketOpenError at /login/
('unable to open socket', [(datetime.datetime(2015, 12, 8, 14, 53, 5, 22728), <class 'ldap3.core.exceptions.LDAPSocketOpenError'>, LDAPSocketOpenError('socket connection error: [Errno 13] Permission denied',), ('172.20.48.12', 389)), (datetime.datetime(2015, 12, 8, 14, 53, 5, 23125), <class 'ldap3.core.exceptions.LDAPSocketOpenError'>, LDAPSocketOpenError('socket connection error: [Errno 13] Permission denied',), ('172.20.48.11', 389))])

 Exception Location:    /usr/local/lib/python3.3/site-packages/ldap3/strategy/base.py in open, line 136

异常的连接线:

Connection(server=Server(host='ldap.server.corp', port=389, use_ssl=False, get_info='NO_INFO'), user='COMPANY\\user', password=u'value_password', auto_bind='NO_TLS', version=3, authentication='SIMPLE', client_strategy='SYNC', auto_referrals=True, check_names=True, read_only=False, lazy=False, raise_exceptions=False, fast_decoder=True)

当我在dev django服务器上启动应用程序时 - 它运行正常,但是当我通过apache运行它时失败了。 如果有这样的需要,我可以分享任何细节。 谢谢。

2 个答案:

答案 0 :(得分:2)

这可能是由于SELinux权限所致。 httpd无法创建套接字以连接到LDAP。无需完全禁用SELinux。

首先进行检查

getsebool -a | grep ldap # check SE booleans

您应该看到

authlogin_nsswitch_use_ldap --> off
dhcpd_use_ldap --> off
httpd_can_connect_ldap --> off

使用以下命令设置布尔值

setsebool -P httpd_can_connect_ldap 1 #-P turns sets the boolean permanently (persist across reboots)

最终结果

authlogin_nsswitch_use_ldap --> off
dhcpd_use_ldap --> off
httpd_can_connect_ldap --> on

答案 1 :(得分:0)

您使用哪个用户运行Apache?可能它不能打开插座。此外,如果您正在使用wsgi,请检查运行python解释器的用户。