受密码保护的页面

问题描述:

我想向我的WPF modernUI应用程序添加一个受密码保护的页面,并且可以使用一些帮助。受密码保护的页面

首先,我并没有真正知道如何在我的情况下正确处理这些东西。

我的应用程序在多台机器上使用。受保护的页面应该是某种管理页面来编辑应用程序使用的数据库。 我的想法是,只有一个管理帐户。但是这个帐户可以在任何机器上使用。管理员应该能够更改他的密码。所以服务器上必须有某种加密的密码文件,可以从任何机器访问。我不想在应用程序中存储密码,因为这意味着管理员必须在每台计算机上更改密码。

所以我的问题是:什么是我的想法最好/最安全的解决方案?我只是寻找提示,因为我不知道要寻找什么。

+0

如果您不想在本地机器上安全地使用密码,则必须开发处理登录请求的API。不要使用直接的mysql – chris579

+0

我想过要么使用数据库,这对于一个用户名和密码来说是相当巨大的。或者将加密的密码保存到文本文件中。为什么我不应该使用mysql?最佳做法是什么? – mykds

+2

直接的MySQL连接可能有害,例如失败的权限或敏感数据。每个人都可以反向设计密码(请记住您使用了.NET),并且可以访问包含密码和盐分的用户表 – chris579

如今,共享数据库的分布式客户端应用程序的最佳实践并不是直接访问数据库。

你需要的是一个WebService。 Web服务可以是任何东西。它只需要在某处进行托管。它可以是一个ASP.NET应用程序,一个WCF服务,甚至可以是与.NET或.NET应用程序无关的东西。

您的应用程序和您的WebService之间的通信取决于您决定使用什么。今天,很多人都在使用所谓的REST API,它们使用XML或JSON作为数据传输格式并使用HTTP协议。

它不难实现这样的API,因为有大量的Libs和解决方案在那里。

您可以在客户端使用RestSharp进行通信。这是直接简单的。你也可以使用WCF服务。哪个托管在IIS中的某处。

然而,你的问题没有什么特别的,有几种解决方案可用。决定是在你身边,因为它取决于很多事情,如预算,可用基础设施等

您的问题是相当广泛的,但就WPF而言,您可以通过创建类实现自定义身份验证和授权它来自IIdentity和IPrincipal接口并覆盖应用程序线程的默认标识。请参阅以下博客文章以获取更多信息。在WPF

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

实际证书应存储在可通过Web服务,WCF服务或一些其他类型的API来访问一些远程服务器上。有关如何实际获取credentails的详细信息将在以上链接的示例代码的AuthenticationService类中实现。