2013-02-11 132 views
0

當談到Web應用程序和ASP時,我非常新手。微軟同步框架身份驗證

最近,我一直在嘗試使用Microsoft Sync Toolkit來通過OData Web服務同步數據庫。

這裏一個明顯的問題是:一旦服務建立併發布 - 所以它對任何知道URL的人開放 - 如何防止未經授權的用戶訪問此服務。

請注意:表單身份驗證的基本身份驗證 - 儘管我的小型Web開發知識達到了 - 似乎並不適合此任務,因爲它不是客戶端試圖訪問的網頁 - 頁面的位置可以顯示/或重定向登錄請求 - 這是我們在此訪問的服務。

爲了讓事情變得更加困難,對於客戶端同步,我使用僅接受該服務的URL的第三方庫/同步提供程序。所以,沒有辦法(我認爲)我可以嘗試將登錄憑證合併到請求標頭等內。

我認爲最好的辦法是在URL中嵌入登錄憑據並將其用於第三方庫。

有人請指導我如何在服務器上設置這樣的東西?我寧願在服務器端代碼的某個地方讓我檢查憑據,並根據它來繼續或中止(返回401)服務請求。

我找不到將此類代碼掛接到同步服務的地方。雖然MSDN中有人建議處理_OnBeginSyncRequest事件,但無法從該方法中訪問Web請求標頭。

是否有任何機會可以從我可以訪問請求標頭的任何地方訪問全局對象?任何人都可以請幫忙嗎?

最後,我更喜歡普通的用戶/密碼字符串對。它不一定(或者不是)與Windows或目錄帳戶有任何關係。我寧願在我的代碼簡單檢查普通字符串,如果(userStr ==「Authenticated user」& & passwordStr ==「Correct Password」)。

回答

0

如果您使用SOAP Web服務,您可以使用WS-Security usernametoken,它將您的用戶名和密碼添加到請求標頭中,否則您可以在Web服務中添加用戶名和密碼作爲參數,然後在服務器端。即

,而不是

bool SyncData(datatable) 

成爲

bool SyncData(datatable, username, password) 

記爲Web服務,您每次調用進行身份驗證,如果你想這樣做每個會話,你需要使用用戶名密碼第一次登錄,檢索一個令牌,而不是每個後續使用該令牌調用您的服務。

您還將使用SSL來保護通道,以便用戶名和密碼不會以純文本的形式傳輸。