为一个Windows用户生成唯一键

时间:2016-12-27 04:59:39

标签: c# active-directory windows-authentication c#-6.0

我有一个带有ASP.NET Web API服务器的WPF客户端。我想为使用客户端的任何特定Windows用户生成唯一密钥,以便Web API可以阻止来自该用户的多次登录尝试。我首先考虑使用:

Environment.UserDomainName + "\" + Environment.UserName

但对于众多用户来说可能是相同的。我不想包含机器名称,因为我想跟踪该用户他们正在使用的任何机器。如何使用UserDomainName + "\" + Environment.UserName组合下的客户端应用程序为某个特定Windows用户创建唯一密钥,无论他们使用哪台计算机?

NB:该密钥应该由用户进行校对,以便用户更改其密钥以防止被锁定会使其无效。没有本地数据库,因此此时密钥存储在用户主目录中的用户设置文件中。但是,无论文件存储在何处,其计算机上的任何管理员都可以访问它,而作为家庭用户,他们通常都是管理员。

1 个答案:

答案 0 :(得分:2)

您可以使用GUID系统,例如:

key = Guid.NewGuid() + "\\" + Environment.UserDomainName + "\\" + Environment.UserName;

一个问题是,重新生成相同GUID的可能性非常小,为了防止这种情况,您可以将所有“已使用”的GUID存储在列表/字典中,并在任何复制时重新生成一个。