0

私はPythonのsudsでこの奇妙なケースのシナリオを持っています。

ローカルIPで実行されているsoapサービス(java)があります。http://10.0.0.1:8080/services/

ローカルネットワーク内でsudshttpbase 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からURLにアクセスしようとしましたhttps://example.com/services/SiteManager?wsdlが、403も返されます。

しかし、最初に他のルートを使用してサインインし(サーバーがtomcatで他のhttpページを実行している)、次にURLに再度アクセスすると、wsdldescページが表示されます。

誰かがこれの何が問題なのか教えてもらえますか?リバースプロキシサーバーまたはsudsトランスポートの構成と関係がありますか?

どうもありがとう!ジャッキー

4

1 に答える 1

0

システム管理者(リバースプロキシの設定を担当している)に相談して解決策を見つけた彼は、MS DMZ(リバースプロキシサーバー)にhttpベース認証を許可するためのチェックボックスオプションがあると述べました。

于 2012-10-10T09:41:28.237 に答える