独特的电脑登录

时间:2011-07-25 14:58:06

标签: c# .net

我正在寻求一些帮助。我意识到有许多线程可以解释在盗版预防和用户许可方面唯一识别计算机的困难和问题。这种情况有点不同,因为用户必须拥有一个活动帐户才能登录并使用该软件。此选项仅在请求的基础上,而不是每个帐户。

当一些公司要求代替管理员帐户时,他们会想要管理员位置,就会出现问题。我正在寻找一个很好的方法来做到这一点,或者如果这仍然会有相同的问题,改变硬件/欺骗MAC。

某些机器需要具有唯一身份识别功能,我们可以远程访问,而其他机器则不需要。 我们在.NET平台上运行 使用我们软件的唯一方法是登录活动。

提前感谢您提供的任何帮助。

3 个答案:

答案 0 :(得分:0)

基本上不可能阻止人们“欺骗”某个位置。因此请求客户允许在他们请求的“位置”之上进行一层身份验证。

除此之外,您可能需要获取一些可松散识别的信息,例如MAC,IP或其他规范,并将其作为加密字符串发送。任何在网络上嗅探的人都无法分辨出发送的数据是什么,如果这是他们的目标,那么将更难以欺骗它。如果他们设法解密消息,那么数据处于打开状态,但在他们能够阅读之前,它提供了一小部分安全性。

我仍然反对这个想法,但我确信可以做到。在软件域本身之外存在大量您需要处理的问题,这些问题会比强大的身份验证方案复杂化。希望这里的其他成员可以提供良好的示例,但您不希望任何误报或其他(动态IP阻碍等)。

答案 1 :(得分:0)

恕我直言,没有好办法将硬件用作主要身份验证方式。您可以执行类似管理员帐户应该绑定到某些硬件,然后尝试尝试检测硬件更改的情况,但这是您拥有帐户和硬件而不是帐户或硬件的情况。

除了所有的讲道,如果你不能说服公司这是一个坏主意,我会做的是为那些特定的机器配备你认证的密钥。然后,您可以完全控制是否/何时允许这些密钥进行身份验证,您可以撤消其访问权限,但仍然可以使其成为正在验证的计算机,而不是帐户。它仍然具有软件控制的所有优点和灵活性,具有与基于硬件相同的效果。

答案 2 :(得分:0)

我同意其他答案,但还有一个建议:
每个Windows在安装时都会生成唯一的SID ...您可以通过DirectoryEntry objectSIDProperties中的string MachineSID = new SecurityIdentifier((byte[])new DirectoryEntry(string.Format("WinNT://{0},Computer", Environment.MachineName)).Children.Cast<DirectoryEntry>().First(). InvokeGet("objectSID"),0).AccountDomainSid.Value.ToString(); 获取该ID ...请参阅http://msdn.microsoft.com/en-us/library/system.directoryservices.directoryentry.aspx
希望这有点帮助...

编辑 - 将MachineSID作为字符串获取(根据评论更正):

using System.Linq;

您需要添加对System.DirectoryServices的引用,并确保using System.Security.Principal;using System.DirectoryServices;以及{{1}}。