请帮帮忙,我有下一期。我有django 1.8 (python 3.3.5,centos 7)应用程序,通过外部MS AD服务器进行ldap身份验证。在我的本地开发环境中,一切正常,可以在应用程序中授权,但在使用Apache服务器迁移到prod后,它会失败,错误权限被拒绝。我正在使用带有django-python3-ldap https://github.com/etianen/django-python3-ldap的ldap3
错误:
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运行它时,它失败了。如果有这样的需要,我可以分享任何细节。谢谢。
发布于 2018-07-04 18:00:53
这可能是由于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发布于 2015-12-10 15:20:45
您使用哪个用户运行Apache?可能它不能打开套接字。另外,如果您使用的是wsgi,请检查运行python解释器的用户。
https://stackoverflow.com/questions/34159005
复制相似问题