在Windows演示基础(WPF)应用程序

时间:2017-03-25 16:01:04

标签: c# wpf authentication login

我创建了一个小型WPF应用程序来执行某些操作。我想将此应用程序分发给某些人,但我希望它只能由授权人员访问。我真的不需要注册机制。

因为应用程序非常小并且将作为EXE文件提供,所以我认为拥有数据库不是一个有效的想法。

我在考虑在应用程序中包含一个包含授权人员凭据的文件,但据我所知,WPF应用程序可以很容易地进行逆向设计。我转过头思考让应用程序联系服务器来授权这个人或某事,但不确定它是否是一个好的选择。

你能否建议或向我推荐一些阅读或最佳实践来学习,因为每当我搜索这个主题时,我都会得到一个实现UI的例子(我知道该怎么做),而不是登录机制。

2 个答案:

答案 0 :(得分:0)

MSDN的富客户端应用程序设计指南

https://msdn.microsoft.com/en-in/library/ee658087.aspx

  

阅读安全注意事项,数据处理注意事项和数据   访问

答案 1 :(得分:0)

反转任何.Net应用程序非常容易,因此拥有一个身份验证系统是为了处理Noobs和不了解反向编程的人,你可以使用使用Cpu Id的身份验证系统,例如我使用,但任何方式像我说的任何.Net是可逆的。 我会在你的身份验证逻辑中删除:

 public static string GetId( )
    {
        string cpuInfo = string.Empty;
        ManagementClass mc = new ManagementClass("win32_processor");
        ManagementObjectCollection moc = mc.GetInstances( );

        foreach (ManagementObject mo in moc)
        {
            if (cpuInfo == "")
            {
                //Get only the first CPU's ID
                cpuInfo = mo.Properties["processorID"].Value.ToString( );
                break;
            }
        }
        return cpuInfo;
    }

你有cpu id后做一些加密

Public static string Encrypt(string CpuId)
{ // do some encryption
    retuen encryptionCpuId;
}

之后在你的UI中创建一个对话窗口,向用户显示他的cpuID并将他发送给你,之后你将加密用户的cpuID并给他激活密钥,为此你必须创建一个其他用于生成加密的项目,并在您的应用程序(您要发布)中检查:

if(Key== Encrypt(GetId()) {// Welcome }
else {Environment.Exit(0); }

所以每个用户都有自己的密钥。

毕竟,你必须知道任何人都可以反映你的代码并破解这种机制。