Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 保护移动设备和web服务之间连接的协议?_Iphone_Android_Authentication_Blackberry_Oauth - Fatal编程技术网

Iphone 保护移动设备和web服务之间连接的协议?

Iphone 保护移动设备和web服务之间连接的协议?,iphone,android,authentication,blackberry,oauth,Iphone,Android,Authentication,Blackberry,Oauth,我正在寻找一种协议来保护移动设备和web服务之间的连接。我希望确保只有移动设备可以在web服务上执行操作,反之亦然。数据不需要加密 我知道Oauth,但当您有3个不同的实体(服务器、使用者和身份验证)时,它似乎更适合用于保护连接。在这里,消费者和用户将是同一个人 是否有一个简单的协议可以做到这一点(不需要用户登录然后像Oauth那样授权访问令牌) 我需要在不同的平台上使用它,因此该协议至少需要在iPhone和PHP上可用。您可以通过HTTPS连接使用共享秘密/单向加密哈希来实现自己的协议 然后,

我正在寻找一种协议来保护移动设备和web服务之间的连接。我希望确保只有移动设备可以在web服务上执行操作,反之亦然。数据不需要加密

我知道Oauth,但当您有3个不同的实体(服务器、使用者和身份验证)时,它似乎更适合用于保护连接。在这里,消费者和用户将是同一个人

是否有一个简单的协议可以做到这一点(不需要用户登录然后像Oauth那样授权访问令牌)


我需要在不同的平台上使用它,因此该协议至少需要在iPhone和PHP上可用。

您可以通过HTTPS连接使用共享秘密/单向加密哈希来实现自己的协议


然后,如果您想确保它只是一个特定的设备,请对设备id+时间戳+设备上的共享机密进行哈希,将其作为参数传递给服务器,并在PHP端验证哈希。

您需要澄清“安全”是什么意思。防范什么?你担心什么

这就是说,https(http over SSL)是一个很好的起点,它将允许您向设备(或浏览器)验证网站,并且无处不在

如果你想验证设备,那就有点麻烦了。你可以生成并存储一个共享秘密(一个随机数),当你第一次连接到网站时,在GET/POST中提供这一点……这方面有很多变化,但简单的变化都源于建立一个共享秘密,其他任何事情都可能是多余的。这将允许您在下次连接时识别同一设备再次连接。将其视为设备登录时使用的密码(但它不需要是单词,也可能不应该是)

这样做的困难在于,如果删除该程序,则该机密将丢失,这可能是一个问题,因为下次在同一设备上运行该程序时,您需要建立一个新的机密。在这种情况下,您将无法知道这次连接的设备与以前连接的设备相同。如果需要,您需要使用某种重置机制,这很难做到,相当于对用户而不是设备进行身份验证


注意,iPhone有一个唯一的标识符,但这并不是一个真正的秘密,提供它并不能真正证明给定设备正在连接。提供它也没有坏处,但它更像是一个断言“我是设备foo”,而不是身份证明。把它想象成登录的用户名部分——你仍然需要一些共享的秘密。

我找到了一个解决方案:使用“两条腿的Oauth”协议

这样,我坚持标准,我不必重新发明轮子,我有一个安全的解决方案

因为消费者和用户对我来说是一样的,所以当我看到消费者作为用户登录时,我只需自动授权消费者询问的“请求令牌”

我正在做的是:

  • 在SSL中:我以用户身份登录,并向服务器请求使用者密钥/密码
  • 服务器返回我的消费者密钥/密码
  • 在SSL中:我以用户身份登录,并使用消费者密钥/密码请求“请求令牌”
  • 服务器识别出我是用户,因此会自动授权请求令牌
  • 没有SSL:我用“请求令牌”请求“访问令牌”
  • 服务器将我的访问令牌还给我
  • 我使用它安全地执行请求

谢谢约翰的回答,我认为这很直截了当。不过,解决方案还应该包括一个nonce,以避免有人捕获请求并重播它。