2012-04-10 57 views
7

我正在编写一个使用ASP.NET Web Api模板的服务器并实现其余服务。该服务器将成为手机游戏的后端,用于存储用户的高分,进度和其他信息。我看了很多方法(this,thisthis),我很难决定使用什么方法。在我的情况下,我想防止欺诈分数主要是因为每个用户帐户将包含有限的信息(他们的电子邮件之外)。这是理想的情况。从跨平台移动应用程序使用REST和ASP.NET Web Api进行身份验证和授权

  1. 用户打开应用程序首次
  2. 给予用户自定义的用户名的选择,这是由服务器检查所以不重复
  3. 用户被赋予一个随机生成六位针数(所以他们可以使用不同的手机相同的帐户)
  4. 用户输入电子邮件地址
  5. 新用户在服务器上创建(服务器验证帐户是由我的客户端应用程序
  6. 0的有效实例创建
  7. 用户玩游戏,上传结果(通过基本认证?
  8. 用户可以查看全球的结果(在GET方法,这些方法不是用户特定的)

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

-Tamas

+0

在这种情况下,基本认证就足够了吗?但我仍然不确定如何确保有人通过有效的客户端访问剩余的API。 – tamaslnagy 2012-04-10 18:44:45

回答

5

即使您正在使用基本身份验证,您也会希望使用HTTPS。如果您使用的是HTTPS,那么您也可以使用客户端证书来验证客户端。只有具有有效证书的客户才能获得访问权限。如果您不打算将此API用于其他用户,并且只能由您开发的客户端使用,那么您可能需要考虑WS-Security和WCF。有一个有趣的描述使用裸体摩托车司机作为比喻here的差异。

+0

我将使用多种语言(Java,Obj-C和C#/ .NET),所以我不知道ws-security/wcf方法是否可行。客户端证书方法是否跨平台? – tamaslnagy 2012-04-10 21:15:13

+0

如果它会跨平台,我会建议坚持使用REST。客户端证书是跨平台的。 – 2012-04-11 12:09:16

+0

听起来不错。我会研究它。此外,我从来不知道初始注册是如何发生在基本认证系统上的,也就是说,当输入的用户名和密码尚未存在于服务器数据库中时。 – tamaslnagy 2012-04-11 14:19:04

1

如果从不同的客户端/设备的,像基于令牌的认证可能为你工作。

这个想法很简单,你在你的Web服务中有认证方法。该方法负责检查凭证和发放“令牌”。一些简单的结构,例如SHA1或MD5字符串,客户端正在使用的其他字符串。

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

+0

如果可能的话,我宁愿通过基于令牌的方法进行基本认证。 – tamaslnagy 2012-04-10 21:12:54

相关问题