我正在PHP中构建REST Web服务,旨在与iOS和Android等移动设备配合使用。基本上,GET请求用于返回JSON数据和请求的结果,POST和DELETE请求用于向服务添加数据。移动Web服务身份验证
基本上,我需要实现一个用户登录/认证系统,这样当用户请求特定的数据给他们,喜欢他们自己的东西列表,或者他们尝试添加数据,他们需要登录。
我知道我需要使用SSL来保护注册和身份验证,但我想避免重新发明。我正在寻找这样做的解决方案?任何建议将不胜感激! 谢谢!
我正在PHP中构建REST Web服务,旨在与iOS和Android等移动设备配合使用。基本上,GET请求用于返回JSON数据和请求的结果,POST和DELETE请求用于向服务添加数据。移动Web服务身份验证
基本上,我需要实现一个用户登录/认证系统,这样当用户请求特定的数据给他们,喜欢他们自己的东西列表,或者他们尝试添加数据,他们需要登录。
我知道我需要使用SSL来保护注册和身份验证,但我想避免重新发明。我正在寻找这样做的解决方案?任何建议将不胜感激! 谢谢!
如果您正在构建一个真正的REST Web服务,那么您不能拥有会话 - 即让用户登录一次,然后服务器记住会话以及使用该会话的用户进行每次后续呼叫。对于REST服务,服务器不会记住“状态”。
每个状态可以通过表示(一个或多个)它 包含与所述一组转换的,它提供完全理解,与 转变限制为均匀的组动作是可以理解的。
(来源:http://tech.groups.yahoo.com/group/rest-discuss/message/5841)
这实际上使你的工作更容易,因为每次调用服务器必须配有一个唯一的标识符来验证用户。您的选项包括发送用户名/密码组合,密钥和其他引用以识别用户,或者可能两者都有。因此,当用户“登录”时,您可以记住他们的详细信息客户端(即以JavaScript形式或通过您的应用程序记住,并记忆在本地存储中用于iPhone/Android),然后将这些详细信息与每个呼叫一起发送。您可以使用休息电话来验证登录详细信息,但它赢了;返回会话。
因此,为了与pseduo代码回答:
PHP端很简单:每一个通话将读取:
显然,你也可以使用不需要认证的服务;这可能包括注册。
捆绑Oauth消费者密钥和秘密的客户端应用程序。使用Oauth 1授权标头为HTTPS请求签名。通过oauth库,现在的签名很容易。
对于web应用程序,没办法。
非常感谢。获得大部分工作:) 现在,对于测试和开发,我通过直接HTTP使用它,并在部署时迁移到HTTPS(SSL)。 我的一个担心是因为我将发送带POST消息的证书来验证用户是否可以添加内容,这些消息必须使用SSL进行保护。其中一些POST表单中包含图像和文件。我不熟悉这样做,我理解通过SSL编码文本/数据,因为它不是很多实际数据。但是,通过SSL正常实践来编码整个图像或文件? – dbrateris
如果你有在ssl下提供的HTML,那么你还需要由ssl提供的图像。网页越来越普遍,以防止eves随无线网络而下降,所以现在没有什么我担心的,除非你对带宽/服务器CPU非常担心。 – Robbie
谢谢。似乎我不应该担心它。 - 为了清楚起见,这不是我提供的网页,而是像iPhone一样的移动设备上传的图片数据。 谢谢! – dbrateris