0

我有这个奇怪的python suds 案例场景。

我有一个在本地 IP 上运行的肥皂服务(java),比如说http://10.0.0.1:8080/services/

我在本地网络中使用 suds http base auth,它工作正常。

from suds.client import Client
c = Client(url, username="user", password="pass")

但我想让它从外部访问,所以我问系统管理员:“你能为这个肥皂服务设置一个外部 IP 使用反向代理吗”

“是的,但是公司防火墙不允许使用 8080 端口,所以你的规则是:

http://10.0.0.1:8080/services/*<->https://example.com/services/*

然后设置了规则,但我无法让客户端工作。我尝试了各种交通工具:

from suds.transport.https import WindowsHttpAuthenticated
from suds.transport.http import HttpAuthenticated
#from suds.transport.https import HttpAuthenticated
from suds.client import Client

http = HttpAuthenticated(username="jlee", password="jlee")
#https = HttpAuthenticated(username="jlee", password="jlee")
ntlm = WindowsHttpAuthenticated(username="jlee", password="jlee")
url = "https://example.com/services/SiteManager?wsdl"
c = Client(url, transport = http)

它总是返回:

suds.transport.TransportError: HTTP Error 403: Forbidden ( The server denied the specified Uniform Resource Locator (URL). Contact the server administrator.  )

我试图https://example.com/services/SiteManager?wsdl从 chrome 访问 URL,它也返回 403!

但是,如果我首先使用其他路由登录(我的服务器在 tomcat 上运行其他 http 页面),然后再次访问该 URL,则会显示 wsdl desc 页面!

谁能告诉我这有什么问题?是否与反向代理服务器或 suds 传输的配置有关?

非常感谢!杰基

4

1 回答 1

0

通过与系统管理员(负责设置反向代理)交谈找到了解决方案,他说 MS DMZ(反向代理服务器)中有一个复选框选项,用于允许 http 基本身份验证。

于 2012-10-10T09:41:28.237 回答