使用Web服务对远程数据库实施用户身份验证

时间:2012-03-25 17:25:41

标签: ios web-services authentication service web

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

这是我到目前为止所做的:

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

这就是我想要的内容:

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

这是我目前所知道的:

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

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

我肯定会感谢您从之前的经历中获得的任何建议,提示或建议。

我不想只是实现它,而是希望尽可能好地实现它。

1 个答案:

答案 0 :(得分:2)

有关于此的书籍,所以这里给出的任何答案都是不完整的。所以,我将向您概述实际上最简单的事情。保护此类服务的最低要求是使用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也是这种情况的可行选择。