为每个用户帐户成功登录到您的服务后,为应用程序生成一个新的访问令牌。您的登录服务应设计为类似于网站登录:
- 该API仅应允许设置次数(例如5次)的错误登录尝试,该尝试会向桌面客户端报告用户名/密码不匹配。
- 当用户成功登录时,API应该返回仅与该用户关联的令牌。
- 使用SSL和本地化的哈希方法将用户密码传递给您的API
您的API提供的此身份验证令牌仅适用于个人帐户,因此,应仅允许用户对其个人帐户执行操作。因此,例如,如果用户要执行操作,则他们必须能够提供有效的身份验证令牌才能完成操作。使用此方法,攻击者仍然可以获取身份验证密钥,但是该身份验证密钥将仅能够对其生成帐户进行操作。它将无法对任何其他帐户执行操作。这里的想法是让他们弄乱数据,但将不良活动划分为一个帐户。
从那里开始,如果确实有访问来自多个帐户的数据的通用API调用(例如图像搜索),请确保您永远不会返回或允许任何帐户直接访问系统中的 所有
数据。仅提供有限数量的记录。在这种情况下,系统仍在执行其工作,但是决不允许访问系统中的所有记录。
我通常实现这样的服务:
- 用户登录并获得身份验证令牌。我将所述身份验证令牌存储在与该用户关联的数据库中。
- 用户使用身份验证令牌调用Web服务。我 通过 传输的身份验证令牌和用户ID(两种身份验证形式)查找用户帐户,并使用发现的用户帐户执行所有操作。我不只是假设用户ID是正确的,还必须是auth令牌进行身份验证的用户ID。
- 如果用户需要执行 微妙的 操作(例如重设密码),我的应用程序会在应用程序中打开浏览器窗口或浏览器任务,用户可以在其中请求和管理重设。与未知客户端上的Web应用程序相比,我可以更轻松地保护Web应用程序。
使用这些方法,您应该能够制作一个完全可操作的桌面应用程序。如果您有任何异常,请在注释中添加这些功能,我们可以进一步深入探讨问题并查看该解决方案是否仍对您有效。



