dotnet restoreコマンドがNTLM認証Proxyを通過してくれずに困った話

dotnet restoreをNTLM認証Proxyの内側で使用しようとしたところ、407が帰ってきてしまうと。

まぁ、この辺はいつものように「そうっすか。」って感じです。なので、ネットで調べ始めます。

GitHubのdotnet/cliのissueとか見るとNuget.ConfigにProxy設定しろやみたいな書込があって、issueがCloseされているので、やってみます。

この設定方法自体はかずきさんのBlogが大変参考になりますのでそちらをご確認ください。

NuGet v3.0で認証プロキシを突破する方法 – かずきのBlog@hatena

ということで、設定して再度dotnet restoreするも、やはり407でエラーが帰ってきます。しかし、nuget install hogeやnuget list hogeコマンド自体はちゃんと動くのでNuget.Configのproxy設定が悪いというわけではないようです。

いろいろ試してみた結果、dotnet restoreコマンドはNuget.Configのhttp_proxy設定は見るけど、http_proxy.userやhttp_proxy.password設定はどうも見てくれないようです。

もうこうなってしまうと、正攻法ではいかないので、cntlmを使ってオフロード走行するしかありません。

cntlmの設定方法は以前以下にまとめておきましたので、参考にしてください。

Cntlmを使いNTLM proxy環境下でもnpmを使いたい

また、dotnetコマンドは環境変数http_proxyをちゃんと読んで動作することがわかったので、NTLM認証Proxy下にある場合にはdotnetコマンド使用前に以下のようなバッチファイルを呼んでから使用するようにしました。


@ECHO OFF
pushd C:\Program Files (x86)\cntlm
start cntlm -f
popd
SET http_proxy=localhost:3128

これでばっちりです。なんかすごい負けている気がしますが、とりあえずちゃんと動きます。また、この方法を行う場合にはNuget.ConfigのProxy設定は消すなりコメントアウトすることを忘れないでください。

以上、認証Proxy被害者の会伊豆の国市支部からの報告でした。

コメントを残す