【问题标题】:How to authenticate native application against a Web Service?如何针对 Web 服务对本机应用程序进行身份验证?
【发布时间】:2014-12-10 13:21:31
【问题描述】:

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

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

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

为什么我认为我需要一个一次性密码? 因为如果密码或哈希值保持不变,客户端App用户很容易拦截,然后可以自己伪造请求,而不需要App。

告诉我你对这个解决方案的看法。

【问题讨论】:

    标签: web-services security authentication one-time-password nativeapplication


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      您可以尝试修改代码以使黑客更难进行黑客攻击,但这只是黑客的额外成本。然而,“仅”可能就足够了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-25
        • 1970-01-01
        • 2010-11-08
        • 2012-07-28
        • 1970-01-01
        • 1970-01-01
        • 2017-04-28
        • 2011-04-22
        相关资源
        最近更新 更多