深度链接时如何安全地将用户访问令牌(敏感数据)传递到另一个iOS应用程序

深度链接时如何安全地将用户访问令牌(敏感数据)传递到另一个iOS应用程序,ios,swift,security,encryption,keychain,Ios,Swift,Security,Encryption,Keychain,我正在开发一个iOS应用程序,它将处理其他应用程序的用户登录。登录成功后,用户将被重定向到用户选择的应用程序(如果已安装),并使用URL方案进行iOS深度链接。重定向后,我想将用户访问令牌传递到打开的应用程序。接收应用程序应该有权读取令牌。由于以下原因(来自Apple docs),无法在url中传递它: “如果多个第三方应用程序注册以处理同一URL 方案,目前没有确定哪个应用程序将 我们将获得该计划。” 这意味着可以打开任意应用程序,从而接收用户访问令牌。我可以加密令牌,接收应用程序将使用共享密

我正在开发一个iOS应用程序,它将处理其他应用程序的用户登录。登录成功后,用户将被重定向到用户选择的应用程序(如果已安装),并使用URL方案进行iOS深度链接。重定向后,我想将用户访问令牌传递到打开的应用程序。接收应用程序应该有权读取令牌。由于以下原因(来自Apple docs),无法在url中传递它:

“如果多个第三方应用程序注册以处理同一URL 方案,目前没有确定哪个应用程序将 我们将获得该计划。”

这意味着可以打开任意应用程序,从而接收用户访问令牌。我可以加密令牌,接收应用程序将使用共享密钥对其解密,但不确定这是否是一种安全的方式

我非常喜欢通过此处所述的钥匙链共享(钥匙链组)共享用户访问令牌的想法,但这似乎只有在使用相同团队(使用相同的应用ID前缀)开发应用程序时才起作用,但在我的情况下,可能会有其他开发人员实现的应用程序。看来这是行不通的

编辑: 仅需确认,共享钥匙链项目仅允许在单个开发团队开发的应用程序中使用():

。。。您可以使用访问组共享密钥链项目。这种共享不需要与用户交互,也不需要用户的许可,但将共享限制在由单个开发团队交付的应用程序上


有没有人能给我一些建议,让我如何安全地将用户访问令牌传递到另一个应用程序?安全地说,这意味着只有有权接收信息的应用程序才会接收信息。

不确定您的访问令牌当前是如何生成的,但我会这样做。我将传入用户名和X(其中X不是访问令牌,但用于计算访问令牌),然后在接收方,我将使用用户名+X计算访问令牌(通过全局salt或其他方式)。一个显而易见的问题是,你不知道这种深层次的联系是从哪里来的,但这应该是可行的。