2

我在爲.net 4.0中的asmx實現自定義基本身份驗證時遇到了一個小問題。 我創建這將啓動Web服務消費者運行過程中出現這個代碼的認證過程中的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代碼強制認證的第一個請求。這樣做可以解決問題,因爲調用者會使用auth頭髮送請求。

相關問題