2

.net 4.0でasmxのカスタム基本認証を実装する際に、少し問題があります。 私は、Webサービスコンシューマrunnigこのコードの認証プロセスを開始するHttpModuleを、 Webサービスのカスタム基本認証

HttpApplication application = (source as HttpApplication); 
HttpContext context = application.Context; 
if (VirtualPathUtility.GetFileName(context.Request.FilePath).Contains("svcEWS.asmx")) 
{ 
    string username = "", password = ""; 

    string authHeader = HttpContext.Current.Request.Headers["Authorization"]; 

    if (!string.IsNullOrEmpty(authHeader) && authHeader.StartsWith("Basic")) 
    { 
     //Authenticate here 
    } 
} 

しかし、このコードに到達したときには認証ヘッダーが存在しないを作成しました。 消費するWebアプリケーションを簡単に呼び出して、

EWS.svcEWS svcEWS = new EWS.svcEWS(); 
svcEWS.Credentials = new NetworkCredential("admin", "admin", "example.com"); 
svcEWS.HelloWorld(); 

IISは、任意の認証要求をキャッチするからそれを防ぐために、匿名認証に匿名認証を実行するように設定されています。

私のモジュールにクライアントが正しいヘッダーを渡してもらえないものがありますか?

+0

マイクロソフトでは、Webサービスの認証をカスタマイズする方法を既に提供しています。それはWCFと呼ばれています! ASMXはこのようにカスタマイズすることを意図していませんでした。車輪を改革する時間を無駄にしないでください。 –

+0

私は同意しますが、私の特定のケースでは、私は既存のWebサービスを模倣しており、それを利用するクライアントを制御することはできません。 – Bryan

+1

解決済み。問題は、ヘッダーを強制するための失敗した認証要求で401に応答するのを忘れていました。 – Bryan

答えて

2

私は認証を強制する401コードで最初の要求を拒否するのを忘れていました。これにより、invoker reがauthヘッダーで要求を送信するため、問題が解決されます。

関連する問題