2016-08-25 34 views
0

Microsoft Dynamics Nav WebServiceからデータを取得しようとしました。 このサービスはNTML認証を使用します。パスワードが設定されている場合、ntlm認証のCurl要求が失敗する

ブラウザでwebservice URLを開き、指定した資格情報を使用するとすべて正常に動作します。

WebServiceクライアントの環境を設定するために、コマンドラインを使用してすべてが正常に動作しているかどうかを確認しました。特定の時点で認証できませんでした。私が使用していますコマンドザッツ

curl --ntlm -u "DOMAIN\USERNAME" -k -v "http://hostname:port/instance/Odata/Company('CompanyName')/Customer" 

コマンドは、パスワードの入力が求められます。 パスワードをコピーしても問題ありません。私はすでに含まパスワードを使用して、このコマンドを使用する場合

はしかし、それは動作を停止し、認証が失敗します。

curl --ntlm -u "DOMAIN\USERNAME:PASSWORD" -k -v "http://hostname:port/instance/Odata/Company('CompanyName')/Customer" 

パスワードは、いくつかの特殊文字が含まれているので、私は持っていたパーセントエンコーディングを、使用しようとしました何の効果もありません。

この種の問題を調査することは非常に困難です。 curl + ntlm認証の問題を検索すると、多くの結果が得られますが、この特定の種類の問題には何も関係しません。

あなたの誰かがこの種の問題で既に経験を持っていますか?

答えて

0

Cookieのために認証に問題がありました。私はこれをtxtファイルのクッキーを含んで解決し、すべての要求を通してこのファイルを正確に使用しました。たとえば、ログイン要求した後、私はこのクッキーを保存:

curl -X POST -u username:password https://mysite/login -c cookies.txt 

次のリクエストで、私はこのように、このファイルを使用:

curl -X POST -u username:password https://mysite/link -b cookies.txt 

をこのソリューションは、私のために働いたあなたの問題ならば、私は知りません似ていますが、私はあなたがこれを試すかもしれないと思います。

+0

おそらく私が持っている問題は少し弱いと書かれていますが、2番目のリクエストで別の認証が必要な問題ではありません。 私の問題は、最初のリクエストにパスワードを入力すると、認証が失敗するということです。 – sbonath

0

私は長い間、同様の問題で苦労していましたが、最後にこのカールバグレポート#1253 NTLM authentication fails when password contains special characters (british pound symbol £)が見つかりました。

cURLのNTLM認証では、パスワードにASCII文字のみがサポートされています。これはUbuntuのバージョン7.50.1でもそうですが、私はこれを多くの異なるディストリビューションでテストしました。これは常に同じです。このバグは、PHPのcurl_init()も破棄します(PHP7でテスト済み)。これを解決する唯一の方法は、NTLM認証パスワードで非ASCII文字を使用しないようにすることです。

あなたがPythonを使用している場合、あなたは幸いです。どうやらPython開発者はcURLの実装を書き換え、HttpNtlmAuthパッケージを使用すると非ASCII文字で動作します。

関連する問題