gpt4 book ai didi

macos - 应用程序总是请求访问钥匙串(keychain)的权限

转载 作者:行者123 更新时间:2023-12-04 12:35:11 25 4
gpt4 key购买 nike

我有一个将用户名和密码存储在钥匙串(keychain)中的应用程序。在 Xcode 3 上工作时一切正常,我最近搬到了 Xcode 4,现在当我运行应用程序时,我得到一个提示:
Application wants to use your confidential information stored in keychain" in your keychain.
点击总是允许后,我看到应用程序添加到钥匙串(keychain)项目的访问控制列表中,但每次运行应用程序时都会得到。

同样在再次点击始终允许后,我看到访问控制有同一个应用程序的两个实例。似乎操作系统认为这是一个新应用程序。

任何想法表示赞赏。

最佳答案

我认为问题在于您的签名的指定要求导致它不接受自己作为与自己“相同的应用程序”(出于钥匙串(keychain)的目的)。

造成这种情况的一个常见原因(我认为这是您的原因)是使用开发人员 ID 应用程序证书,没有指定要求,也没有安装中间证书。

标准的开发者 ID 要求如下所示:

designated => anchor apple generic and 
identifier \"com.example.appName\" and
((cert leaf[field.1.2.840.113635.100.6.1.9] exists) or
(certificate 1[field.1.2.840.113635.100.6.2.6] exists and
certificate leaf[field.1.2.840.113635.100.6.1.13] exists and
certificate leaf[subject.OU] = \"1AZBYCXDW9V\" ))

如果您想自己构建它,则必须将标识符替换为捆绑标识符,并将 subject.OU 替换为证书中的值。 (如果您在 Keychain Access 中双击它,它应该被列为组织单位。)然后您可以添加到“Other Code Signing Flags”:
--requirements "=designated ..." (the whole mess from above)

但是,更好的方法是使用 Xcode 4.3.2 或更高版本。如果它识别出您正在使用开发人员 ID 应用程序证书,并且可以在钥匙串(keychain)中看到中间证书,它将默认生成此证书。

此外,如果您使用 Xcode 中的存档管理器来“导出开发人员 ID 签名的应用程序”,而不是仅使用目标目录中的构建,它将确保对您的应用程序和任何其他随附的可签名文件进行签名,并且它将测试一切都设置正确。 (失败非常神秘——例如,您的“选择要签名的开发者 ID”步骤可能没有选择,系统日志中的消息没有有用的信息——但至少失败或成功的事实缩小了范围你的问题在哪里。)

无论哪种方式,您都需要从位于 Developer Certificate Utility 的“开发者 ID 中间证书”链接下载并安装(在您的构建机器上)名为“开发者 ID 证书颁发机构”的中间证书。地点。

最后一件事:即使这可以解决您在构建机器上运行的问题,您也确实希望在您支持的最旧的操作系统版本上进行测试。例如,Lion 的 codesign 编译的需求有时无法在 Leopard 上解析,有时甚至无法在 Snow Leopard 上解析。如果发生这种情况……见 Gatekeeper vs. Leopard: an ongoing tale .

关于macos - 应用程序总是请求访问钥匙串(keychain)的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11234323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com