對於客戶端服務器應用程序,我想開發一個主要由應用程序本身使用的Web服務(目前不打算供第三方使用)。通過服務方法自定義身份驗證?
然而,從長遠來看,將WebService公開爲某種API通常是可取的。因此,我已經在選擇一種能夠在稍後輕鬆地進行「RESTIFing」(可怕的單詞創作,我知道;-))Web服務的技術方面提出一些想法。
WCF似乎就在這裏,因爲它提供了webHttpBinding,還有其他允許利用局域網和.NET客戶端的綁定。
我現在遇到的問題是關於驗證:WCF提供的所有驗證措施似乎都發生在「實際服務之外」。但是,我想有一個Login
方法(或者更多的「RESTful」,如here under point 2所示)。
例如,我想編寫一個服務像這樣的:
[ServiceContract]
public interface IUserService
{
[ServiceMember]
[WebInvoke(Method = "POST", WebUri="/Session")]
public void Login(string username, string password);
[ServiceMember]
[WebInvoke(Method = "POST", WebUri="/Users")]
public void Register(RegisterUserParameter parameter);
}
我怎麼這個服務集成到WCF所以最好的方法,我的服務項目的工作在多個子服務?
使用內置的WCF認證時,我需要在進行任何服務調用之前提供用戶名和密碼。因此,撥打Register
或Login
將會失敗,因爲我沒有得到確認。
如何告訴WCF使用我的服務方法記住哪個用戶當前登錄?有沒有可能在客戶端的WCF會話中存儲類似會話cookie的東西?
或者在WCF下以我想要的方式實現身份驗證通常不是個好主意嗎?
我是否應該直接選擇WebAPI,其代價是在客戶端應用程序中使用更復雜的方式與服務對話?