2009-09-03 14 views
1

私は本ですべてをやっているとは言えますが、.NETクライアントは自分の要求を行うときに認証ヘッダーを送信しないだけです。 SOAP Webサービス。私は物事のPHPの終わりに未加工の投稿データを記録することでこれを確認しました。そして、.NETは決して認証ヘッダーを送信しません。HTTP認証資格を非.NET WebServiceに送信する方法

ExampleWebService.PreAuthenticate = true; 
NetworkCredential myCred = new NetworkCredential("myusername","mypassword"); 

CredentialCache myCache = new CredentialCache(); 
myCache.Add(new Uri(ExampleWebService.Url), "Basic", myCred); 
ExampleWebService.Credentials = myCache; 

私はそれを理解し、注:PreAuthenticateは関係なく、挑戦のすべての要求に私のHTTP基本認証の資格情報の送信を強制する必要があります。

これは私が私のExampleWebService Webサービスの呼び出しを行う前に実行しているコードです。これはIISのホストサービスでのみ機能しますか?私はどこにも書かれていない。

私は

答えて

3

HttpWebRequestクラスは実際にはしません;-)私の髪を引っ張っに近いんだと、この上で流すことができ、.NETの世界では、私よりも経験豊富な誰かが大幅にいただければ幸いです任意の光PreAuthenticate = trueでさえ、の最初のリクエストにAuthorizationヘッダーを送信します。 同じCredentialsCacheインスタンスを使用している限り、同じレルムへの後続の呼び出しでAuthorizationヘッダーを送信します。 Some recommend adding the headers explictly

+1

は「機能」か「バグ」ですか? ;-) – jthompson

+1

http://tools.ietf.org/html/rfc2617#page-5によると、正しい動作です。クライアントは、Basicの場合でも、サーバーからチャレンジと* realm *を取得する必要があります。 –

+0

問題のWebServiceは、認証がオプションであるため、挑戦を提示しないので、これを問題の根本的な原因とみなします。他のSOAPクライアントはobvioiuslyの仕様に従っていないし、各要求に対して資格情報を強制的に入力しているので、.NETに対してテストするまでこの問題に遭遇していない。 – jthompson

関連する問題