【问题标题】:Authentication and authorization using REST and ASP.NET Web Api from cross-platform mobile applications从跨平台移动应用程序使用 REST 和 ASP.NET Web Api 进行身份验证和授权
【发布时间】:2012-04-11 05:15:40
【问题描述】:

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

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

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

-塔马斯

【问题讨论】:

  • 在这种情况下,也许基本的身份验证就足够了?但我仍然不确定如何确保有人通过有效的客户端访问其余 api。

标签: asp.net security http rest asp.net-web-api


【解决方案1】:

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

【讨论】:

  • 我将使用多种语言(Java、Obj-C 和 C#/.NET),所以我不知道 ws-security/wcf 方法是否可行。客户端证书方法是否跨平台?
  • 如果它是跨平台的,我建议坚持使用 REST。客户端证书是跨平台的。
  • 听起来不错。我会调查的。另外,我一直不明白基本身份验证系统的初始注册是如何进行的,也就是说,当输入的用户名和密码还没有在服务器数据库中时。
  • 服务器应该返回一个HTTP 401错误代码,意思是“未授权”。
  • 确实如此,但我将如何实际授权想要加入我的服务的新用户?
【解决方案2】:

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

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

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

【讨论】:

  • 如果可能的话,我更喜欢基本身份验证而不是基于令牌的方法。
猜你喜欢
  • 2014-09-05
  • 1970-01-01
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
  • 2012-04-10
  • 2014-02-25
  • 2012-03-12
  • 1970-01-01
相关资源
最近更新 更多