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は、任意の認証要求をキャッチするからそれを防ぐために、匿名認証に匿名認証を実行するように設定されています。
私のモジュールにクライアントが正しいヘッダーを渡してもらえないものがありますか?
マイクロソフトでは、Webサービスの認証をカスタマイズする方法を既に提供しています。それはWCFと呼ばれています! ASMXはこのようにカスタマイズすることを意図していませんでした。車輪を改革する時間を無駄にしないでください。 –
私は同意しますが、私の特定のケースでは、私は既存のWebサービスを模倣しており、それを利用するクライアントを制御することはできません。 – Bryan
解決済み。問題は、ヘッダーを強制するための失敗した認証要求で401に応答するのを忘れていました。 – Bryan