移动Web服务认证

时间:2012-12-04 02:36:37

标签: php authentication service login web

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

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

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

2 个答案:

答案 0 :(得分:5)

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

  

每个州都可以完全理解它的表现形式   包含它提供的转换集和   过渡局限于一系列可以理解的统一行动。

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

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

所以用pseduo代码回答:

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

    1. 如果没有用户名/密码/密钥:拒绝致电
    2. 在数据库中查找用户名/密码/密钥。如果无效:拒绝致电
    3. 如果有效:处理剩余电话 - 您有用户的详细信息。
    4. 显然,您还可以使用不需要身份验证的服务;这可能包括注册。

答案 1 :(得分:0)

将Oauth消费者密钥和秘密捆绑到客户端应用程序。使用Oauth 1授权标头进行HTTPS请求。现在使用oauth库很容易签名。

对于网络应用,没办法。