是否可以在iOS上使oauth安全?是否可以在iOS上使oauth安全?
我调查OAuth 2.0以实现单点登录+授权的iOS应用的“套房”的一种手段。为了解释我的担忧,我将简化并使用Facebook +使用Facebook进行身份验证的第三方应用程序(比方说单词/“与朋友的单词”)。
出于示例的目的,我假定寄存器的Facebook支持方案/协议“脸谱://”,并且词语寄存器来支持“词://”
我也有这样的假设因为您可以反编译应用程序,所以无法在iOS应用程序中保护“客户机密”或协议。我已经想出了任何方法来保证结果为security by obscurity。
另一个假设是没有办法来防止两个应用程序从注册处理相同的协议。两个应用程序都为相同协议注册时的行为是不确定的。 (尽管似乎启动装置上的第一应用程序被注册,而第二应用注册被忽略)
如果我理解iOS设备在Facebook上(用户代理)和字(客户端)之间的工作流程:
- 用户启动词
- 用户选择通过Facebook凭证登录
- 字调用的OpenURL(“脸谱://”),其包含,除其他事项外的标识符以用于字作为应用程序和重定向URI(即 “词://”)
- iOS的启动Facebook应用
- 用户enteres凭证,因此Facebook应用程序验证对Facebook的授权服务器。
- 提示用户授权话说到访问Facebook数据(即无法用言语来访问我的好友列表)
- Facebook的调用由词与访问令牌一起提供的回调URI(即词:// token_here的access_token)
- 词用途此令牌来访问我的好友列表(即保护资源数据)
假设以上是正确的,如果我想成为恶意访问随机的人的朋友列表,我可以创建也注册来处理协议的应用“words://”并在应用商店中获取。如果有人安装了我的应用和单词,并且我的应用是成功注册的应用(即推出词前的设备上),则:
- 启动词,选择登录,启动Facebook的
- 用户认证/授权
- 的Facebook试图通过对重定向URL 调用的OpenURL回重定向到词
- 我的应用程序(不字)推出
- 我的应用现在已经获得了授权码,这(通过反编译学到的秘密),可以为来的access_token交换,有权限访问你的好友列表
我希望我的推理有缺陷,或者我必须得出结论(特别是)对第三方应用程序的Facebook iOS身份验证不安全。
更一般地说,是否可以在iOS应用程序上安全地实现OAuth 2.0(授权/隐式授权工作流)?
你是指一般的OAuth或使用Facebook iOS API的Facebook吗?对于一般的OAuth,您应该可以在应用程序的Web视图中处理身份验证,无需注册自定义网址。 –
OAuth通常会使用授权/隐式授权工作流程。 – jayraynet