无用户帐户的iOS安全API
我知道这是一个很受欢迎的问题,但我还没有找到任何其他能满足我具体需求的问题 背景无用户帐户的iOS安全API,ios,objective-c,ruby-on-rails,api,Ios,Objective C,Ruby On Rails,Api,我知道这是一个很受欢迎的问题,但我还没有找到任何其他能满足我具体需求的问题 背景 我有一个iOS应用程序,可以从RubyonRails开发的web API检索数据 我想将我的API私有化,以便其他来源不能使用来自我的API的数据(即,其他人开发了一个点击我的API url并为其客户使用数据的应用程序) 要求 (硬)专用API,以便只有授权客户端(仅来自iOS应用程序)才能从API访问数据 (硬)用户不得创建用户/密码帐户 (软)我读到,当试图让应用程序获得苹果的批准时,SSL可能会成为一场
- 我有一个iOS应用程序,可以从RubyonRails开发的web API检索数据
- 我想将我的API私有化,以便其他来源不能使用来自我的API的数据(即,其他人开发了一个点击我的API url并为其客户使用数据的应用程序)
- (硬)专用API,以便只有授权客户端(仅来自iOS应用程序)才能从API访问数据
- (硬)用户不得创建用户/密码帐户
- (软)我读到,当试图让应用程序获得苹果的批准时,SSL可能会成为一场噩梦。由于这是一个小时间应用程序(到目前为止),我宁愿不依赖SSL但是,如果您能为我指出在iOS上所有API流量中使用SSL的方便性的正确方向,我洗耳恭听)
编辑1:
我仍然很惊讶这不是经常出现的事情。一定有很多应用程序可以与API通信,但不会强迫用户注册。如果SSL或OAuth是唯一合适的解决方案,请进行辩护。我洗耳恭听。除了跨设备跟踪用户的问题之外,我不知道如何提供一个合理简单可靠的机制,而不是游戏中心帐户,让我们讨论一种简单的方法来关闭其他应用程序的API 握手包括您的客户端提交一个URL请求,该请求可能已经包含一个特定于设备的令牌来标识您的用户。来自服务器的响应将是字符串形式的随机一次性质询。客户机和服务器都知道一个非常重要的函数,该函数生成一个响应字符串,作为质询和可能的用户令牌的函数,从而验证客户机
该机制决不是安全的,但实现起来很简单,并且会为其他机制提供一些障碍。您肯定应该验证用户令牌的形式以获得一些额外的保护。例如,如果您的令牌是MAC地址,则请求必须具有MAC地址的形式。我最终根据在web上找到的一些建议推出了自己的解决方案(请参阅最后的参考链接)
AFAIK,如果没有一些易出错的iCloud技巧,就无法跨设备跟踪用户,有些人可能会纠正我。至于保护API,请使用长令牌质询客户端,并让它返回由秘密函数生成的哈希。不完美,但可能足够好。@s.bandara因为我对以这种方式保护东西非常陌生,你能给我指出一个链接,我可以跟进或进一步解释吗?如果我挑战每个客户端(我的iOS应用程序),我是否需要这样做才能在1之前“打开通信线路”。请求数据,获取令牌,发送散列,然后获取数据(4次行程)?感谢您的评论和回答。我写了我自己的答案,但我感谢你加入讨论。每次我读到一些关于这个话题的东西,都会产生共鸣,并在某个地方被某种方式所使用。所以,非常感谢您的回答。如果您正在为每个请求生成一个新的auth_令牌,那么在我看来,您可以用一个简单的质询响应来替换所有这些步骤:1)iOS使用api请求发送生成的sig,2)服务器验证sig并发送api响应或拒绝访问。不那么凌乱。您概述流程的方式,如果有