【问题标题】:Implement user authentication against remote DB with a Web Service使用 Web 服务对远程数据库实施用户身份验证
【发布时间】:2012-04-09 09:03:09
【问题描述】:

我刚刚开始研究在我即将推出的应用中实现用户身份验证的最佳方式。

这是我目前所拥有的:

  • 远程服务器上的桌面 (Windows) 应用程序。该应用程序可通过浏览器在本地访问(它有一个 Web 控制台和 MS SQL Server 来存储所有内容)。
  • 该应用程序与存储在数据库中的本地凭据一起使用。

这就是我想要完成的:

  • 提供从我的应用程序访问有关该 SQL Server 数据库的某些信息的权限。当然,一旦用户使用有效凭据验证了自己的身份,就必须授予该访问权限。

这是我目前所知道的:

  • 如何创建我的 PHP Web 服务并使用 JSON 从数据库查询信息。
  • 如何使用 AFNetworking 库来检索信息。
  • 如何在应用程序上显示该信息。

我不知道哪种方法可能是从 iOS 实现用户身份验证的最佳方法。我应该发送用户名和密码吗?我应该发送一些哈希吗?有没有办法确保握手的安全?

我肯定会感谢您从以前的经验中获得的任何建议、提示或建议。

我不想仅仅实现它,而是想尽可能地做好它。

【问题讨论】:

    标签: ios web-services authentication service web


    【解决方案1】:

    已经有关于这方面的书籍,所以这里给出的任何答案都是不完整的。所以,我会给你一个实际可行的最简单的东西的大纲。保护此类服务的最低要求是使用由 SSL/TLS 保护的 HTTP 基本身份验证(AFNetworking 和 PHP 都原生支持)。

    基本身份验证是一种以标准方式散列(非加密)凭据并将其作为请求中的一个标头发送的方法 (Authorization: Basic <Base64-encoded concatenated credentials>)。 AFNetworking 支持它作为其AFHTTPClient 类的一部分(参见-setAuthorizationHeaderWithUsername:password: 方法)。 PHP 将身份验证标头解析为一对服务器变量($_SERVER['PHP_AUTH_USER']$_SERVER['PHP_AUTH_PW'])。从这里,您只需对照您的用户数据库检查用户名/密码组合,并允许或禁止访问该资源。

    将此技术与 HTTPS 配对至关重要的原因是凭证哈希很容易可逆;您基本上是在明文发送密码,因此任何人都可以监听您的流量。设置证书并通过安全通道发送您的请求可防止此类漏洞。

    如果您想要更复杂一点,两足 OAuth 也是这种场景的可行选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多