加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何启用用户从唯一一台计算机(通过获取CPU Serial)登录到ASP.NE

发布时间:2020-12-16 03:40:06 所属栏目:asp.Net 来源:网络整理
导读:场景: 我有Web部署的ASP.NET-MVC 5应用程序与个人用户帐户:Identity 2.x.每个用户都有一个电子邮件和密码通过浏览器登录Web应用程序,这意味着用户可以通过任何设备使用Internet浏览器进行登录. 我想在每次登录时使用完全相同的PC类机器的情况下启用用户登
场景:

我有Web部署的ASP.NET-MVC 5应用程序与个人用户帐户:Identity 2.x.每个用户都有一个电子邮件和密码通过浏览器登录Web应用程序,这意味着用户可以通过任何设备使用Internet浏览器进行登录.

我想在每次登录时使用完全相同的PC类机器的情况下启用用户登录.

我可以礼貌地要求用户在必要时运行任何桌面.NET(.exe)应用程序.我还可以要求用户使用Chrome浏览器,如果插件是必要的话.直译我可以承担任何事情.解决方案可能会非常不舒服,这很好.

我的半解决方案:

>通过桌面获取CPU序列号(让我们称之为Authorizer.exe)应用程序,该应用程序将此唯一ID发送到ASP.NET-MVC Web应用程序,同时登录它以授权该用户使用某台PC. Authorizer.exe会通过嗅探通过网络传输的数据包来检测登录到Web应用程序.

检测用户的位置,这会限制他移动计算机.
>创建桌面应用程序,只能使用Web应用程序提供的唯一序列激活一次.只有打开这个桌面应用程序才能登录到ASP.NET-MVC.(我不知道该怎么做).

为什么我问这个问题:

如果有人窃取用户的电子邮件和密码,我不想让小偷能够登录,但对我来说最重要的是我不希望让用户从不同的设备登录.

解决方法

我能想到的唯一解决方案是发布客户端证书,并在您的应用程序中使用证书身份验证.

管理证书

要管理证书,您需要实施PKI,这需要:

>获取颁发证书所需的证书颁发机构(可以是公共CA,也可以使用自签名证书)
>使用CA为您的Web服务器颁发证书
>将您的应用配置为通过HTTPS工作,并要求进行证书身份验证
>为您的用户颁发证书,并在他们的浏览器中安装它们

确保用户无法将证书移动到其他计算机

薄弱环节是最后一个.您必须注意如何安装以及如何颁发证书.

在用户的浏览器上安装证书

在浏览器中安装证书.您可以:

>创建一个证书文件,用于在浏览器中导入证书
>使用允许通过浏览器访问页面来请求证书的PKI基础结构(证书服务器),并且一旦发布(即其请求被接受),则需要使用相同的浏览器在其中安装证书.

注意:在这两种情况下,您都必须接受请求并颁发证书或拒绝它.证书不会自动发放

第一个选项有一个问题:如果您将证书发送给您的用户,他将能够在任何机器上安装任何次数.要解决此问题,您需要访问用户的计算机,复制文件,安装并删除它.第二个选项解决了这个问题.

第二种选择更安全.但是,具有良好知识的用户仍然可以在此过程中恢复服务器发出的文件,并将证书安装在其他位置.

使私钥不可导出

另一个需要考虑的重点是,当您颁发证书时,通常会有一个选项允许其私钥可导出.如果设置此选项,则用户可以从安装它的浏览器中导出PK,并将其安装在其他位置.显然你想避免这种情况.因此,请禁用此选项.

使用此选项,用户仍然可以导出证书,但没有其私钥,因此无法将其安装在其他位置.

设置PKI

我没有提供有关如何设置PKI的其他详细信息,因为它主要取决于基础结构(操作系统和版本).如果您想了解有关证书和PKI wikipedia entry for “X.509”和wikipedia entry for PKI的更多信息.那么您可以查找有关在特定基础架构(OS)中设置PKI的其他信息.

这个系统的安全性

你可以放心,这个系统是非常安全的:例如,在我的国家,你可以通过这种方式识别自己,制作许多“官方”的东西,比如申报和纳税.

撤销证书

而且,如果您想知道如果您想拒绝对已经拥有证书的用户的访问会发生什么.答案是您可以随时撤销证书,以便服务器不允许您的用户使用其证书进行身份验证,因为它已被撤销.

用户和机器安全

另一件让您担心的事情是,其他用户将相同的计算机和日志记录到您的应用程序中.由于这个原因,它看起来比较难:

>证书仅在您使用安装它的同一用户登录到计算机时可用
>安装证书时,可以让操作系统在有人想要使用证书时请求密码
>您可以让您的应用获得双重授权:

>首先,证书授权(事实上,这是由IIS本身处理的)
>第二,询问用户名和密码(或使用证书的用户名,并要求提供与用户相关的其他密码)

编辑:肮脏的解决方案,以及所有它们的女王,evercookie,将数据存储在12个不同的可想象和不可想象的地方

我已经看到很多建议使用“魔术方式”来识别用户的机器,而他不知道并接受它,或者,或者可以通过一些用户操作来打破.这些解决方案不稳定,甚至可能不合法.此外,所解释的解决方案都不是可靠的或易于实现的,但是在我的答案结束时我将会这样做.但在此之前,请允许我解释为什么我更喜欢证书解决方案.

安装已颁发的证书不会对用户隐藏,并且除非用户故意删除证书,否则不能破坏该证书.用户可以被告知他需要证书来访问应用程序,因此您既不会作弊,也不会“神奇”地识别他的机器.这是一个干净,支持和记录的解决方案.除了证书不能被caracked或黑客攻击(严格意义上说,一切都可以被破解或黑客攻击,但这太难以破解).除此之外,所有浏览器都可以共享相同的证书,因为它不是安装在浏览器中,而是安装在计算机的证书存储中.因此,即使用户使用其他浏览器打开应用程序,证书仍然存在.并且很容易检查验证它的问题是否是缺少的证书(或与之相关的东西).

但是,如果您仍然希望在没有批准用户的计算机的情况下实现可识别用户计算机的解决方案,或者不解释其工作原理,则可以使用“supercookies”.如果你google for thister,你会发现很多地方都会利用Flash存储.甚至Flash HTML5存储.或者它甚至可以使用许多其他地方来存储所需的信息.但你会发现这种技术不受欢迎.而且可以对抗低点并让你陷入困境.但是,那说,如果你还想做这种“肮脏”的事情,你可以使用evercookie.它是用JavaScript实现的,你可以看到这些信息并从这个链接下载代码:

> http://samy.pl/evercookie/

免责声明:如果你使用这个邪恶的东西并遇到某种麻烦,不要责怪我!我告诉你了!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读