移动Web服务认证

dbr*_*ris 1 php authentication service login web

我正在构建一个PHP的REST Web服务,旨在与iOS和Android等移动设备一起使用.基本上,GET请求用于返回带有请求结果的JSON数据,POST和DELETE请求用于向服务添加数据.

基本上,我需要实现用户登录/身份验证系统,以便当用户请求特定于他们的数据时,例如他们自己的某些列表,或者他们尝试添加数据时,他们需要登录.

我知道我需要使用SSL来保护注册和身份验证,但我希望避免重新发明内容.我正在寻找这样做的解决方案?任何建议将不胜感激!谢谢!

Rob*_*bie 5

如果您正在构建一个真正的REST Web服务,那么您就无法拥有会话 - 即让用户登录一次,服务器然后记住会话以及用户使用该会话进行每个后续调用.对于REST服务,服务器将不记得"状态".

每个状态可以通过它包含的表示和它提供的转换集完全理解,其中转换限于可以理解的统一操作集.

(来源:http://tech.groups.yahoo.com/group/rest-discuss/message/5841)

这实际上使您的工作更容易,因为每次调用服务器都必须带有唯一标识符来验证用户.您的选择包括发送用户名/密码组合,密钥和其他参考以识别用户,或者可能两者.因此,当用户"登录"时,您会记住他们的详细信息客户端(例如,在网络表单中的javascript中,或者通过您的应用程序,并记住在iPhone/Android的本地存储中),然后在每次调用时发送这些详细信息.您可以使用休息调用来验证登录详细信息,但它赢了; t返回会话.

所以用pseduo代码回答:

  1. HTML:用户登录.表单被Javascript捕获,用户名/密码(或其他密钥)被javascript,OR记住
  2. iOS/Android:用户登录.表单被代码捕获并记住在本地存储中
  3. [可选]向您的"WhoAmI"网络服务发送用户名/密码/密钥:如果有效,您会收到回复.如果无效,则发送错误.这可以立即给出反馈
  4. 对于每次其他呼叫,您还会向您的Web服务发送用户名/密码/密钥:如果您有效处理呼叫,如果无效,则会抛出错误.
  5. (在收到错误时,您要求用户提供新凭据).

PHP方面很简单:每个调用都会读取:

  1. 如果没有用户名/密码/密钥:拒绝电话
  2. 在数据库中查找用户名/密码/密钥.如果无效:拒绝来电
  3. 如果有效:处理剩余电话 - 您拥有用户的详细信息.

显然,您还可以使用不需要身份验证的服务; 这可能包括注册.