7

我正在编写一个使用 ASP.NET Web Api 模板的服务器并实现休息服务。该服务器将作为移动游戏的后端,用于存储用户的高分、进度和其他信息。我查看了许多方法(thisthisthis),但在决定使用哪种方法时遇到了麻烦。就我而言,我想主要防止分数欺诈,因为每个用户帐户都将包含有限的信息(在他们的电子邮件之外)。这是理想情况下会发生的事情。

  1. 用户首次打开应用
  2. 为用户提供了自定义用户名的选项,并且由服务器检查,因此没有重复
  3. 给用户一个随机生成的六位数密码(这样他们就可以在不同的手机上使用相同的帐户)
  4. 用户输入电子邮件地址
  5. 在服务器上创建新用户(服务器验证该帐户是由我的客户端应用程序的有效实例创建的
  6. 用户玩游戏,上传结果(通过基本认证?
  7. 用户可以查看全局结果(非用户特定的 GET 方法没有安全性)

我无法缩小要使用的身份验证类型(没有浏览器登录屏幕等)和授权方法。任何帮助将不胜感激。

-塔马斯

4

2 回答 2

5

即使您使用基本身份验证,您也将希望使用 HTTPS。如果您使用的是 HTTPS,那么您也可以使用客户端证书来验证客户端。只有拥有有效证书的客户才能获得访问权限。如果您不向其他消费者开放此 API,并且它只会由您开发的客户端使用,您可能需要考虑 WS-Security 和 WCF。这里有一个有趣的描述,使用裸体摩托车司机作为隐喻。

于 2012-04-10T19:32:57.637 回答
1

如果它来自不同的客户端/设备,则基于令牌的身份验证之类的东西可能对您有用。

这个想法很简单,你的 Web 服务中有 Authentication 方法。此方法负责检查凭证和颁发“令牌”。所有进一步的客户端调用都在使用一些简单的结构,例如 SHA1 或 MD5 字符串。

如果客户端通过身份验证,它将在整个会话期间存储令牌。其余的 Web 服务方法,例如 SaveScore,只接受令牌作为参数。然后他们负责检查它是否有效。如果令牌无效,则不会为呼叫提供服务。

于 2012-04-10T19:15:06.163 回答