Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将web应用的登录限制为某些特定设备_C#_Asp.net_Authentication_Web Applications - Fatal编程技术网

C# 将web应用的登录限制为某些特定设备

C# 将web应用的登录限制为某些特定设备,c#,asp.net,authentication,web-applications,C#,Asp.net,Authentication,Web Applications,我创建了一个用于建筑行业的人工/计时应用程序,它由一个WinForms客户端(员工在其中实际打卡)和一个WCF web服务组成,该服务用于输入和输出事件并向客户端提供数据,以及一个用于配置、管理和报告的后端WinForms部件。这都是带C#的.NET 我还打算编写一个ASP.NET Web客户端,使其更加灵活,以便在平板电脑和/或手机上使用 所以,现在背景已经不重要了,这里有一个要求,我正试图找出最好的方法来完成 我不想让员工只需要在家里打卡,或者通过个人电话打卡;他们应该使用公司拥有的设备打卡

我创建了一个用于建筑行业的人工/计时应用程序,它由一个WinForms客户端(员工在其中实际打卡)和一个WCF web服务组成,该服务用于输入和输出事件并向客户端提供数据,以及一个用于配置、管理和报告的后端WinForms部件。这都是带C#的.NET

我还打算编写一个ASP.NET Web客户端,使其更加灵活,以便在平板电脑和/或手机上使用

所以,现在背景已经不重要了,这里有一个要求,我正试图找出最好的方法来完成

我不想让员工只需要在家里打卡,或者通过个人电话打卡;他们应该使用公司拥有的设备打卡,工头将该设备放在卡车中用于特定目的。同时,我希望登录到web应用程序时,只需输入一个4位数的pin码,然后单击“打卡”或“打卡”即可(这对建筑行业的员工没有冒犯,但有些人在尝试在移动设备上键入用户名和密码时确实遇到了麻烦)

将访问此web客户端的权限限制为特定的授权设备集的最佳方式是什么?我曾考虑尝试使用MAC地址过滤器,并阅读了有关使用客户端证书限制哪些设备可以访问web服务的内容,但有没有更好的方法?我的意思是,如果你有一个罕见的混凝土修整工,他碰巧是个书呆子,并且知道如何从公司的设备上取下来,难道客户证书就不能复制到某人的个人手机上吗


web应用程序中是否有其他方法可以唯一标识设备并将其与授权设备列表匹配?

在ASP.net中,您不能获取客户端网络适配器的MAC地址。因此,您不能指望为“有效”设备定义MAC地址的白名单。但您也可以使用其他一些技巧:

1-您可以找到您的客户端设备的IP地址,如果未经您的授权,可以对其进行限制

2-您还可以检测操作系统、计算机名、浏览器名和屏幕分辨率,在这种情况下,您可以使用它们

3-您可以保留一个标记,显示您为特定用户和控件设置了多少cookie


4-您可以使用Windows身份验证来阻止您的用户进行基于表单的身份验证(当然,如果您的网络基于active directory)

您可以在访问webapp之前,先给领班输入用户名/密码或pin。任何使用MAC地址的东西也容易受到攻击。我刚才的另一个想法是,如何防止人们告诉他们的朋友他们的pin码,并让他们使用它。@Dharun我同意你的意见,让工头先登录系统,这减少了其他人从工作区之外登录的担忧。当伙伴们互相登录时,PIN确实是一个问题。我怀疑你能侥幸逃脱,但让他们进入SSN可能会阻止人们让他们的朋友登录。我知道我不会给我的朋友或同事我的SSN。无论谁在什么时候登录,我仍然想限制对特定设备的访问,并且需要知道实现这一点的最佳方法一种方法是在设备上留下一个持久的cookie(这基本上就是让工头授权设备正在做的事情。你也可以让其他人来做).当然,有人可以从设备上窃取cookie,但他们需要访问它。如果你考虑一下谷歌分析,他们想出的唯一识别设备的最佳方法就是这种方法。我认为#1和#4不可能满足我的需要,因为我需要支持安卓和IOS设备,而且它们可能位于手机网络上,因此IP将无法满足我的需要很可能经常变化。我喜欢这样的建议,即使用操作系统、计算机名和屏幕分辨率,以及其他一些我可以访问的属性,并用这些属性制作某种密钥。这不是超级安全的,但可能足够满足我的需要。