2009-07-14 15 views
16

ローカルのイントラネットサイトをミラーリングしようとしていて、以前の質問で 'wget'を使用していました。これは匿名のサイトではうまくいきますが、username \ password(Windows認証が統合されたIIS)が必要なサイトに対しては使用できませんでした。ここでNTLMで保護されたサイトに対してwgetを使用

は私が渡しです:

のwget -c --http-ユーザー= 'ドメイン\ユーザー--http-パスワード= PWD http://local/site -dv

ここにありますデバッグ出力(Iは明らかにダミーの値でいくつかを置き換えます)。

 
Setting --verbose (verbose) to 1 
DEBUG output created by Wget 1.11.4 on Windows-MSVC. 

--2009-07-14 09:39:04-- http://local/site 
Host `local' has not issued a general basic challenge. 
Resolving local... seconds 0.00, x.x.x.x 
Caching local => x.x.x.x 
Connecting to local|x.x.x.x|:80... seconds 0.00, connected. 
Created socket 1896. 
Releasing 0x003e32b0 (new refcount 1). 

---request begin--- 
GET /site/ HTTP/1.0 
User-Agent: Wget/1.11.4 
Accept: */* 
Host: local 
Connection: Keep-Alive 

---request end--- 
HTTP request sent, awaiting response... 
---response begin--- 
HTTP/1.1 401 Access Denied 
Server: Microsoft-IIS/5.1 
Date: Tue, 14 Jul 2009 13:39:04 GMT 
WWW-Authenticate: Negotiate 
WWW-Authenticate: NTLM 
Content-Length: 4431 
Content-Type: text/html 

---response end--- 
401 Access Denied 
Closed fd 1896 
Unknown authentication scheme. 
Authorization failed. 

答えて

2

私はこの種の問題を回避するためにNTLM Authorization Proxy Serverを使用することができることへの参照を見てきました。

9

wget 1.11でNTLM認証が壊れています。代わりに1.10を使用してください。

+4

関連するバグチケットへのリンクを追加すると便利です – Daenyth

+0

それが本当であるかどうかまだテストすることができません。しかし、私はNTLMの場合、stdoutで異なる動作を確認します。 http://www.mail-archive.com/[email protected]/msg00003.html –

+0

私もそれが私のために働くことを確認することはできません。 'wget --version'は' cygwin上に構築されたGNU Wget 1.12を報告します。 + digest + ipv6 + nls + ntlm + opie + md5/openssl + https -gnutls + openssl + iri'のようになります。しかし、私のケースではサーバは 'WWW-Authenticate:Negotiate'だけを提供しています(これは' NTLM'または 'Kerberos' - 交渉されると思います)。 –

7

実際、CurlはNTLM認証Webサーバーからコンテンツを取得するための優れたツールです。私は解決策を見つけた

curl --anyauth --user username:password http://someserver/site 
+0

カールは魅力的に働いた、ありがとう。 – diogovk

+0

"--anyauth"の代わりに "--ntlm"を使用すると私のために働きました。さもなければ、私はそれが失敗した "交渉"認証を選択したと思います( "--ntlm --negotiate"も失敗しました)。 –

0

使用-–auth-no-challengeオプション(wgetの1.11+)

1

を:あなたは使用して、提案のwgetコマンドラインと同等の機能を得ることができます。
基本認証IIS7の回避策です。

AUTHが、それは次のHTTPヘッダを送信するsuccessefulのとき:

'Authorization: <type> <credentials>'. 

ブラウザと コピーこのヘッダーのparamsブラウザから(放火魔のアドオン)で認証を行うか、生成するだから我々はできる:

$ echo -en 'username:password' | base64 
dXNlcm5hbWU6cGFzc3dvcmQK 
$ echo 'dXNlcm5hbWU6cGFzc3dvcmQK' | base64 -d 
username:password 

例:

$ wget --header="Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQK" http://example.com/ 
関連する問題