2016-12-28 237 views
0

我想向我的WPF modernUI應用程序添加一個受密碼保護的頁面,並且可以使用一些幫助。受密碼保護的頁面

首先,我並沒有真正知道如何在我的情況下正確處理這些東西。

我的應用程序在多臺機器上使用。受保護的頁面應該是某種管理頁面來編輯應用程序使用的數據庫。 我的想法是,只有一個管理帳戶。但是這個帳戶可以在任何機器上使用。管理員應該能夠更改他的密碼。所以服務器上必須有某種加密的密碼文件,可以從任何機器訪問。我不想在應用程序中存儲密碼,因爲這意味着管理員必須在每臺計算機上更改密碼。

所以我的問題是:什麼是我的想法最好/最安全的解決方案?我只是尋找提示,因爲我不知道要尋找什麼。

+0

如果您不想在本地機器上安全地使用密碼,則必須開發處理登錄請求的API。不要使用直接的mysql – chris579

+0

我想過要麼使用數據庫,這對於一個用戶名和密碼來說是相當巨大的。或者將加密的密碼保存到文本文件中。爲什麼我不應該使用mysql?最佳做法是什麼? – mykds

+2

直接的MySQL連接可能有害,例如失敗的權限或敏感數據。每個人都可以反向設計密碼(請記住您使用了.NET),並且可以訪問包含密碼和鹽分的用戶表 – chris579

回答

2

如今,共享數據庫的分佈式客戶端應用程序的最佳實踐並不是直接訪問數據庫。

你需要的是一個WebService。 Web服務可以是任何東西。它只需要在某處進行託管。它可以是一個ASP.NET應用程序,一個WCF服務,甚至可以是與.NET或.NET應用程序無關的東西。

您的應用程序和您的WebService之間的通信取決於您決定使用什麼。今天,很多人都在使用所謂的REST API,它們使用XML或JSON作爲數據傳輸格式並使用HTTP協議。

它不難實現這樣的API,因爲有大量的Libs和解決方案在那裏。

您可以在客戶端使用RestSharp進行通信。這是直接簡單的。你也可以使用WCF服務。哪個託管在IIS中的某處。

然而,你的問題沒有什麼特別的,有幾種解決方案可用。決定是在你身邊,因爲它取決於很多事情,如預算,可用基礎設施等

1

您的問題是相當廣泛的,但就WPF而言,您可以通過創建類實現自定義身份驗證和授權它來自IIdentity和IPrincipal接口並覆蓋應用程序線程的默認標識。請參閱以下博客文章以獲取更多信息。在WPF

自定義授權:https://blog.magnusmontin.net/2013/03/24/custom-authorization-in-wpf/

實際證書應存儲在可通過Web服務,WCF服務或一些其他類型的API來訪問一些遠程服務器上。有關如何實際獲取credentails的詳細信息將在以上鍊接的示例代碼的AuthenticationService類中實現。