7

アプリの現在の(ひどく破壊されて無愛想な)cURLベース(cURLコマンドラインベース!)のSOAPクライアントをsudsまたはsoap.pyに置き換えたいと思います。問題は、MS CRMサービスに連絡する必要があるため、NTLMを使用する必要があることです。さまざまな理由から、NTLMプロキシを使用するのは少し面倒なので、そのサポートを提供するためにpython-ntlmを調べています。

この認証方法を使用するためにsudsまたはsoap.pyを作成できますか?もしそうなら、どのように?そうでなければ、他の提案は素晴らしいでしょう。

編集

以下で説明するように、sudsはすぐにpython-ntlmをサポートしています。

4

3 に答える 3

6

0.3.8以降、 Sudsはそれをサポートするように修正されました。

python-suds-0.3.9 \ suds \ Transportation\https.pyのソースは次のように述べています。

class WindowsHttpAuthenticated(HttpAuthenticated):
    """
    Provides Windows (NTLM) http authentication.
    @ivar pm: The password manager.
    @ivar handler: The authentication handler.
    """

    def u2handlers(self):
        # try to import ntlm support  
        try:
            from ntlm import HTTPNtlmAuthHandler
        except ImportError:
            raise Exception("Cannot import python-ntlm module")
        handlers = HttpTransport.u2handlers(self)
        handlers.append(HTTPNtlmAuthHandler.HTTPNtlmAuthHandler(self.pm))
        return handlers

ここで説明されているように、次のスニペットを試してください。

from suds.transport.https import WindowsHttpAuthenticated
ntlm = WindowsHttpAuthenticated(username='xx', password='xx')
client = Client(url, transport=ntlm)
于 2010-03-25T15:08:18.997 に答える
1

別のアプローチは、soap例外中にcurlコマンドを呼び出してから、再試行を開始することです。

何かのようなもの...

curl -x websenseproxy:8080 --ntlm -U domain\user:password --insecure https://blah.com/prod/webservice.asmx?WSDL

#insecure自己署名証明書に使用されます

于 2012-08-23T04:43:20.663 に答える
0

CNTLMは、すべてのNTLM認証呼び出しを処理するローカルプロキシサービスとして使用できます。次に、soapyまたはurllib2を使用して認証なしでローカルCNTLMプロキシIPとポートを参照するだけです...実際には何でも。

複雑なプロキシをうまく処理するPythonライブラリをまだ見つけていません。

于 2012-08-23T04:40:05.443 に答える