我有一個網站託管使用會員供應商授權的web服務。我希望能夠通過來自第二個站點的web服務調用進行身份驗證,而不會反彈回web服務站點上的登錄頁面。我怎樣才能做到這一點?訪問會員供應商後面的web服務
作爲一個方面說明,對我來說最好是允許訪問站點的特定主機的自定義規則。所以如果請求來自www.mysite.com,它將覆蓋授權。
我有一個網站託管使用會員供應商授權的web服務。我希望能夠通過來自第二個站點的web服務調用進行身份驗證,而不會反彈回web服務站點上的登錄頁面。我怎樣才能做到這一點?訪問會員供應商後面的web服務
作爲一個方面說明,對我來說最好是允許訪問站點的特定主機的自定義規則。所以如果請求來自www.mysite.com,它將覆蓋授權。
您可以在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部分,瞭解如何部署。
乾杯。
您必須在web服務目錄中放置一個web.config文件並允許匿名訪問它。或者,您可以僅使用Windows身份驗證,並使用模擬來授權呼叫。