我想在我的WPF modernUI应用程序中添加一个受密码保护的页面,并可以使用它。
首先,我不知道如何在我的情况下正确处理这些东西。
我的应用程序用于多台计算机上。受保护的页面应该是某种管理页面,用于编辑应用程序使用的数据库。 我的想法是,只有一个管理员帐户。但是这个帐户可以在任何机器上使用。管理员应该能够更改他的密码。因此,服务器上必须有某种加密的密码文件,可以从任何机器访问。我不想在应用程序中存储密码,因为这意味着管理员必须在每台机器上更改密码。
所以我的问题是:对我的想法最好/最安全的解决方案是什么?我只是在寻找提示,因为我不知道要搜索什么。
答案 0 :(得分:2)
现在,共享数据库的分布式客户端应用程序的最佳实践确实无法直接访问数据库。
您需要的是WebService。 Web服务可以是任何东西。它只需要托管在某个地方。它可以是ASP.NET应用程序,WCF服务,甚至可以是与PHP或Java应用程序无关的.NET。
您的应用程序与WebService之间的通信取决于您决定使用的内容。今天,很多人都在使用所谓的REST API,它使用XML或JSON作为数据传输格式并使用HTTP协议。
实现这样的API并不困难,因为那里有大量的Libs和解决方案。
您可以使用RestSharp进行客户端的通信。这是直截了当的简单。您还可以使用WCF服务。哪个托管在IIS的某个地方。
然而,您的问题并不特别,并且有几种解决方案可用。由于这取决于很多预算,可用的基础设施等等,所以这个决定就在你身边。
答案 1 :(得分:1)
您的问题非常广泛,但就WPF而言,您可以通过创建从IIdentity和IPrincipal接口派生的类并覆盖应用程序线程的默认标识,在您的应用程序中实现自定义身份验证和授权。有关更多信息,请参阅以下博客文章。
WPF中的自定义授权: https://blog.magnusmontin.net/2013/03/24/custom-authorization-in-wpf/
实际凭证应存储在可通过Web服务,WCF服务或某种其他API访问的某个远程服务器上。有关如何实际获取凭证的详细信息将在上述链接的示例代码中的AuthenticationService类中实现。