我正在开发一个iOS应用程序,它将处理其他应用程序的用户登录。登录成功后,用户将被重定向到用户使用URL方案进行iOS深层链接的所选应用程序(如果已安装)。在重定向时,我想将用户访问令牌传递给开放应用程序。接收应用程序应该以某种方式有权读取令牌。由于以下原因(来自Apple文档https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html),因此无法将其传递到网址中:
"如果有多个第三方应用注册处理相同的网址 方案,目前没有确定哪个应用程序的流程 得到那个计划。"
这意味着任意应用可能会打开,从而接收用户访问令牌。我可以加密令牌,接收应用程序会使用共享密钥对其进行解密,但我不确定这是否是一种安全的方法。
我非常喜欢通过Keychain Sharing(钥匙串组)共享用户访问令牌的想法,如下所述:http://evgenii.com/blog/sharing-keychain-in-ios/,但这似乎只有在使用同一个团队开发应用程序时才能使用(使用相同的应用程序) ID前缀),但在我的情况下,可能会有其他开发人员实施的应用程序。所以看起来这不起作用。
修改: 只是为了确认,共享钥匙串项目仅允许在由单个开发团队(https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html)开发的应用程序中使用:
...您使用访问组共享钥匙串项目。这种共享不需要与用户进行交互或获得用户的许可,但限制了与单个开发团队交付的应用程序的共享。
有人可以建议我如何安全地将用户访问令牌传递给其他应用程序吗?安全地意味着只有有权接收信息的应用才会收到它。