我正在开发一款适用于Mac OS的应用程序,它包含三个二进制文件:
所有三个二进制文件都使用相同的OAuth令牌连接到某个Web服务。令牌由主应用程序检索(在用户登录服务后首次运行)并存储在系统的钥匙串中。
为了确保应用的其他两个部分也可以访问相同的令牌,我正在尝试设置Keychain共享。在Apple的Developer Portal中,我创建了三个App Store Provisioning配置文件,每个配置文件对应一个二进制文件。所有这些都使用相同的开发人员证书(“3rd Party Mac Developer Application
”)进行签名。
在这种情况下,没有任何二进制文件会在我的开发系统上运行,并引用“Code Signature Invalid”。此外,在系统控制台中,taskgated会写入以下消息:“killed [app] because its use of the keychain-access-groups entitlement is not allowed (error code -67050)
”。
在Xcode的每个目标的功能页面中,没有任何错误地启用了Keychain共享功能,这是值得的。
如何解决此问题?我唯一想到的就是禁用Keychain共享,但这需要用户在第一次运行窗口小部件时单击(Always)Allow。
另一种解决方案是完全消除钥匙串,但将OAuth令牌存储在NSUserDefaults
等不安全的地方是不可取的。我找不到钥匙链的安全替代品,如果它起作用,我认为这是最好的解决方案。