潜在客户要求禁止其用户从除特定公司拥有和管理的设备之外的所有设备登录我们的应用程序。我正在研究执行此类身份验证限制的方法,但还没有找到解决方案。
我知道Android提供的device management solutions允许在托管设备上列出白名单和黑名单。但我不知道能否在公司托管设备以外的设备上将应用程序的身份验证列入黑名单。我们的应用程序目前在Play商店中,当前客户可以从任何兼容的Android设备登录,并可访问Play商店。因此,这必须是仅适用于特定用户帐户的限制。
答案 0 :(得分:3)
实现此目的的正确方法是使用SSL相互身份验证。
https://www.codeproject.com/Articles/326574/An-Introduction-to-Mutual-SSL-Authentication
在此方案中,设备将在现场配置客户端证书,然后您的应用程序使用的所有[1]服务器端点将验证此证书。这当然要求客户端代码准备网络连接以提供此证书和服务器配置以进行验证。这是安全的,因为您的现场私钥可能受到某种HSM的保护。如果设备受到危害,那就是:只有那个设备,当然你可以根据它提供的证书将该设备从服务器列入黑名单(参见:CRL)。
如果你做了其他任何事情,你可能会以一种有安全漏洞的方式重新发明轮子,因为你没有花20年的时间来开发它。
[1]您可能会打开某些允许有限功能的端点。
对您而言,这可能是一项巨大的工程工作,而不仅仅是您的客户想要花费。如果他们愿意接受混淆代替真正的安全性,您可以让客户端在标头中发送秘密(例如设备串行的哈希值+密码或其他内容)。这是一个配置步骤,您可以在服务器上注册该秘密并根据请求进行验证。但请记住,没有什么可以阻止恶意代理以与您的应用相同的方式制定有效请求。