繁体   English   中英

如何针对Web服务对本机应用程序进行身份验证?

[英]How to authenticate native application against a Web Service?

我需要找到一种解决方案来确保我的应用程序作为本机应用程序在移动设备上分发,并且只有我的应用程序可以访问我在其他地方托管的Web服务。 换句话说,我的Web服务应仅通过合法使用我的应用程序接受请求,而不能以任何其他方式。

我想到的解决方案如下,请告诉我您是否认为有更好的解决方案,或者这还不够:

计数器同步一次性密码(CS-OTP):基本思想是,每一方(WS和应用程序)都拥有硬编码的秘密密钥和同步计数器。 每次客户端应用程序向WS发送请求时,它都会生成带有密钥和计数器值的哈希。 后端WS会执行相同的操作并比较哈希,如果它们相同,则身份验证成功,并且双方都增加其计数器以使其保持同步。 由于每次成功尝试后计数器都会增加,因此哈希值每次都会不同(因此名称为“一次性密码”)。

为什么我认为我需要一次性密码? 因为如果密码或哈希值保持不变,则客户端应用程序用户可以非常容易地截获密码,然后客户端可以伪造请求而无需应用程序。

告诉我您对该解决方案的看法。

实现此目标的方法很多,我的方法是使用您建议的密钥从客户端到服务器创建加密令牌。 我还将在此加密密钥中包含一些有助于验证的信息。 包括诸如IP地址,过期日期/时间,当前时间等内容。因此,尝试重播流量的某人必须在特定时间段内来自同一ip地址,等等。您可以根据自己的需要进行更改。 希望这可以帮助。

我相信,只要本机应用程序受黑客控制,他就可以调试您的应用程序并窃取您的秘密。 不管秘密是什么。 如果您提供机密,则将其提供给该人,而不是应用程序。

您可以为应用程序的每个实例提供一个唯一的秘密,然后可以阻止sb。 谁的行为很奇怪。 这为您提供了一种身份验证。

您可能会尝试修改代码以增加黑客的难度,但这只是黑客的额外费用。 但是,“仅”可能就足够了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM