代理后面的SOAP Web服务,使用python-suds访问

时间:2012-05-31 07:28:22

标签: python soap https reverse-proxy suds

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

我有一个在本地ip上运行的soap服务(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.  )

我尝试从Chrome访问网址https://example.com/services/SiteManager?wsdl,它也返回403!

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

有谁可以告诉我这有什么问题?它与反向代理服务器或suds传输的配置有关吗?

非常感谢! 济

1 个答案:

答案 0 :(得分:0)

通过与系统管理员(谁负责设置反向代理)交谈找到解决方案,他说MS DMZ(反向代理服务器)中有一个复选框选项,允许http base auth。