Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自远程web服务器的Python LDAP身份验证_Python_Active Directory_Ldap_Webserver - Fatal编程技术网

来自远程web服务器的Python LDAP身份验证

来自远程web服务器的Python LDAP身份验证,python,active-directory,ldap,webserver,Python,Active Directory,Ldap,Webserver,我有一个django应用程序托管在webfaction上,它现在有一个静态/私有ip 我们办公室的网络显然在防火墙后面,广告服务器在防火墙后面运行。在网络内部,我可以使用python ldap对AD的内部IP地址和端口389进行身份验证,所有这些都可以正常工作 当我将其移动到托管Web服务器时,我会更改防火墙上已打开的ip地址和端口。为了简单起见,我们打开的端口是389,但是验证请求总是超时。当登录到Web派系并从shell运行python并查询ipaddress时,我得到的是Web派系的通用i

我有一个django应用程序托管在webfaction上,它现在有一个静态/私有ip

我们办公室的网络显然在防火墙后面,广告服务器在防火墙后面运行。在网络内部,我可以使用python ldap对AD的内部IP地址和端口389进行身份验证,所有这些都可以正常工作

当我将其移动到托管Web服务器时,我会更改防火墙上已打开的ip地址和端口。为了简单起见,我们打开的端口是389,但是验证请求总是超时。当登录到Web派系并从shell运行python并查询ipaddress时,我得到的是Web派系的通用ip地址,而不是静态ip地址

当我尝试在django中进行身份验证时,会发生这种情况吗?请求来自python运行的底层ip地址,而不是我的防火墙所期望的静态ip

我对所有这些网络和端口映射都一无所知,所以任何帮助都将不胜感激


希望这是有意义的?

在托管的django应用程序和内部广告之间有很多组件。您需要对每个组件进行测试,看看它们之间的路径是否都正确

因此,您的广告服务器位于防火墙后面。您的防火墙具有ip“a.b.c.d”,所有到端口389上防火墙ip的流量都被转发到AD服务器。我建议您将其更改为防火墙上更高更随机的端口,顺便说一句,减少扫描

通过shell访问,您可以测试是否可以访问您的网络。在您尝试以下操作之一(或类似于python的操作)时,让您的防火墙管理员检查防火墙日志:

  • 检查到防火墙的路由(如果WebParty阻止此操作,此操作可能不起作用,否则您将看到流量将通过的主机列表-如果路由上某处有防火墙,您将看到您的连接在那里丢失,因为大多数防火墙默认情况下都会断开连接):

    tracert a.b.c.d

  • 对端口389上的防火墙ip执行telnet测试(telnet测试将允许防火墙管理员在其日志中查看端口389上的连接尝试。如果这些尝试确实到达,则意味着外部通信应正常工作):

    telnet a.b.c.d 389


类似地,您需要检查您的广告服务器是否接收到这些请求(检查您的日志),以及是否能够响应这些请求。也许您的广告服务器没有设置为与防火墙对话?

在托管的django应用程序和内部广告之间有很多组件。您需要对每个组件进行测试,以查看它们之间的路径是否都正确

因此,您的广告服务器位于防火墙后面。您的防火墙具有ip“a.b.c.d”,所有到端口389上防火墙ip的流量都被转发到AD服务器。我建议您将其更改为防火墙上更高更随机的端口,顺便说一句,减少扫描

通过shell访问,您可以测试是否可以访问您的网络。在您尝试以下操作之一(或类似于python的操作)时,让您的防火墙管理员检查防火墙日志:

  • 检查到防火墙的路由(如果WebParty阻止此操作,此操作可能不起作用,否则您将看到流量将通过的主机列表-如果路由上某处有防火墙,您将看到您的连接在那里丢失,因为大多数防火墙默认情况下都会断开连接):

    tracert a.b.c.d

  • 对端口389上的防火墙ip执行telnet测试(telnet测试将允许防火墙管理员在其日志中查看端口389上的连接尝试。如果这些尝试确实到达,则意味着外部通信应正常工作):

    telnet a.b.c.d 389


类似地,您需要检查您的广告服务器是否接收到这些请求(检查您的日志),以及是否能够响应这些请求。也许您的AD服务器没有设置为与防火墙对话?

我建议不要直接打开防火墙上的LDAP端口。相反,我建议创建一个SSH隧道。这将对LDAP流量进行必要的加密。这里有一个例子

ssh -N -p 22 username@ldapserver -L 2222/localhost/389

这假设ssh服务器正在ldap服务器的端口22上运行,并且可以从web主机访问。它将创建一个从ldap服务器上的端口389到web主机上的端口2222的隧道。然后,在web主机上配置django应用程序,使其认为LDAP服务器正在本地主机端口2222上运行

我建议不要将防火墙上的端口直接打开到LDAP。相反,我建议创建一个SSH隧道。这将对LDAP流量进行必要的加密。这里有一个例子

ssh -N -p 22 username@ldapserver -L 2222/localhost/389

这假设ssh服务器正在ldap服务器的端口22上运行,并且可以从web主机访问。它将创建一个从ldap服务器上的端口389到web主机上的端口2222的隧道。然后,在web主机上配置django应用程序,使其认为LDAP服务器正在本地主机端口2222上运行

我们非常成功地使用了远程LDAP和django,因此,如果它在本地以开发模式工作,您可能确实存在特定于您的安装或WebPaction的网络/端口问题。我们非常成功地使用了远程LDAP和django,因此如果它在本地以开发模式工作,您可能确实存在特定于您的安装或webfaction的网络/端口问题。