【问题标题】:Authenticate a mobile device when its visiting a website without using any other applications在不使用任何其他应用程序的情况下访问网站时对移动设备进行身份验证
【发布时间】:2016-01-11 05:01:44
【问题描述】:
我们有一个客户端要求在移动设备访问特定 URL 时对其进行身份验证,由于这是一个很少使用的功能,因此决定在 仅网站中完成此功能,
该网站将基于 ASP.net/Web API 用于进一步调用和 AngularJS 在 UI 设计中
请帮助我解决以下有关访问特定 URL 时移动设备身份验证的问题,
- 我们有什么方法可以用来验证移动设备
基于其唯一标识?
- 但根据我们的分析,获取 IMEI、IMSI、MSISDN 或电话号码等数据是否存在安全风险?此外,提取这些网站访问数据的努力也失败了,那么我们还有其他可以用作身份验证参数的唯一数据吗?
- 如果上述方法都不可行,请向我们提出任何想法,让特定移动设备在访问 URL 时无需任何用户登录或一次性密码或 Flash 呼叫身份验证即可进行身份验证?
- 正在访问的 URL 将使用第 3 方 SMS 服务提供商提供给用户,SMS 提供商中是否有任何数据可用于身份验证
谢谢,
巴拉
【问题讨论】:
标签:
.net
angularjs
authentication
mobile
asp.net-web-api
【解决方案1】:
您可以使用 PKI 和数字证书。您的 Web 服务器可以信任特定的从属证书颁发机构和根证书颁发机构。客户端移动设备可以具有由下级证书颁发机构颁发的证书。在某些手机上,此证书的私钥可以位于手机的 TPM 中。 Apple 的 iPhone 有一个安全的 enclave - 可以在那里存储证书的私钥。
【解决方案2】:
物理设备没有什么是真正独一无二的。但它携带的信息可以。进行基于客户端(而不是基于用户)身份验证的正确方法是使用客户端证书。
与 PKI 证书不同,您列举的信息类型可以很容易地构成,因为它们没有完整性检查。即使在受控的网络服务器环境中,IP 和 MAC 地址也仅用于连接限制,而不用于身份验证。我不认为你可以通过浏览器收集它们。
如果您只想简化用户在移动设备上的登录体验,您可能需要查看this。
【解决方案3】:
我不知道移动设备(不是在移动设备上运行的应用程序)可以通过浏览某个 URL 来唯一识别。
但是,由于您提到您创建 URL 并将其发送到您的移动客户端,您可以添加一个一次性访问允许加密身份验证参数。
网址示例:
https://www.yourdomain.com/YourWebAPI/Authentication?p=jkshdksj!(sa
然后在你的 web api 代码 (PSEUDU) 中:
var decryptedParameter = Decrypt(p)
var validationResult = Validate(decryptedParameter)
if(validationResult == Success)
{
RedirectToSite();
}
你可以在 Validate() 中做任何你想做的业务逻辑