是否可以在iOS上使oauth安全?
我正在调查OAuth 2.0,以便为iOS应用的“套件”实施单点登录+授权。为了解释我的担忧,我将简化并使用Facebook +第三方应用程序,使用Facebook进行身份验证(假设单词/“与朋友约会”)。
出于示例的目的,我假设Facebook注册支持方案/协议“facebook://”并且Words注册以支持“words://”
我还假设无法在iOS应用程序中保护“客户机密钥”或协议,因为您可以反编译该应用程序。我提出的任何方法都可以保证security by obscurity。
另一个假设是无法阻止两个应用程序注册以处理相同的协议。当两个应用程序都注册相同协议时的行为是不确定的。 (虽然看起来在设备上启动的第一个应用程序在第二个应用程序注册被忽略时被注册)
如果我了解iOS设备上的Facebook(用户代理)和Words(客户端)之间的工作流程:
假设以上是正确的,如果我想要恶意并访问随机人的朋友列表,我可以创建一个应用程序,它还注册处理协议“words://”并在应用商店中获取它。如果有人安装了我的应用程序和单词并且我的应用程序是成功注册的应用程序(即在单词之前在设备上启动),那么:
我希望我的推理存在缺陷,或者我必须(特别)得出第三方应用的Facebook iOS身份验证不安全的结论。
更一般地,是否可以在iOS应用程序上安全地实施OAuth 2.0(授权/隐式授权工作流程)?
答案 0 :(得分:1)
Google为此问题提出了一个实验性解决方案,他们称之为OAuth 2.0 for Installed Applications。
Google OAuth 2.0端点支持设备上安装的应用程序......假设这些应用程序无法保密。
基本上,共享密钥被视为非秘密。
在撰写本文时,大多数OAuth 2.0服务器似乎都不支持此实验设计。
此设计引入了攻击者可能创建一个新客户端的风险,该客户端将自己表示为授权服务器的应用程序(攻击者需要获取您在问题中描述的客户端标识符,或者遵循其中一种技术建议here)。
但是,由于资源所有者(用户)不太可能授权恶意应用程序对受保护资源采取任何操作,因此他/她将知道应用程序不是,因此这种风险似乎得到了缓解。事实上,你的申请。