【问题标题】:Python LDAP Authentication from remote web server来自远程 Web 服务器的 Python LDAP 身份验证
【发布时间】:2009-06-13 10:09:05
【问题描述】:

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

我们办公室的网络显然在防火墙后面,而 AD 服务器在此防火墙后面运行。在网络内部,我可以使用带有 AD 的内部 IP 地址和端口 389 的 python-ldap 进行身份验证,并且一切正常。

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

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

我对所有这些网络和端口映射一无所知,因此非常感谢任何帮助!

希望这有意义吗?

【问题讨论】:

  • 我们非常成功地使用了远程 LDAP 和 django,所以如果它在本地开发模式下工作,您可能确实遇到了特定于您的安装或 web 派系的网络/端口问题。

标签: python active-directory ldap webserver


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    在您托管的 django 应用程序和您的内部 AD 之间有很多组件。您将需要测试每一个,看看它们之间的路径中的所有内容是否正确。

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

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

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

      tracert a.b.c.d

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

      远程登录 a.b.c.d 389

    同样,您需要检查您的 AD 服务器是否接收到这些请求(检查您的日志)以及是否可以响应它们。也许您的 AD 服务器未设置为与防火墙通信?

    【讨论】:

      猜你喜欢
      • 2012-11-14
      • 1970-01-01
      • 2013-09-20
      • 2013-12-28
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      • 2017-09-14
      • 1970-01-01
      相关资源
      最近更新 更多