2010-04-14 46 views
1

我有一個網站託管使用會員供應商授權的web服務。我希望能夠通過來自第二個站點的web服務調用進行身份驗證,而不會反彈回web服務站點上的登錄頁面。我怎樣才能做到這一點?訪問會員供應商後面的web服務

作爲一個方面說明,對我來說最好是允許訪問站點的特定主機的自定義規則。所以如果請求來自www.mysite.com,它將覆蓋授權。

回答

1

您可以在web.config中使用<location/>標記打開特定的目錄或文件。

我不認爲有主機訪問控制的內在方法。

一個非常簡單的方法可以通過實現一個簡單的HttpModule來保護端點或目錄。

using System; 
using System.Net; 
using System.Web; 

namespace HttpLibArticleSite 
{ 
    public class GuardDogModule : IHttpModule 
    { 
     #region IHttpModule Members 

     public void Init(HttpApplication context) 
     { 
      context.BeginRequest += BeginRequest; 
     } 

     public void Dispose() 
     { 
      //noop 
     } 

     #endregion 

     private static void BeginRequest(object sender, EventArgs e) 
     { 
      HttpContext ctx = (HttpContext) sender; 

      if (ctx.Request.Url is not guarded) return; 

      if (ctx.Request.Headers["take your pick"] != what 
      you want) 
      { 
       ctx.Response.StatusCode = (int) HttpStatusCode.Forbidden; 
       ctx.Response.End(); 
      } 
     } 
    } 
} 

沒有遵守,顯然,沒有測試,但會讓你到你需要去的地方。請參閱web.config system.web/httpModules部分,瞭解如何部署。

乾杯。

0

您必須在web服務目錄中放置一個web.config文件並允許匿名訪問它。或者,您可以僅使用Windows身份驗證,並使用模擬來授權呼叫。