首页 > 解决方案 > macOS 钥匙串共享绕过密码对话框

问题描述

我正在尝试构建一个在 macOS 上使用钥匙串共享的应用程序。但是当尝试访问钥匙串数据时,它会显示以下对话框。

macOS 钥匙串对话框

这造成了非常糟糕的用户体验,用户被迫输入他们的计算机密码才能使用该应用程序。

我在 iOS 上没有遇到过这个问题。

我怎样才能绕过这个对话框?所有的应用程序都是在同一个开发团队下签署的,所以我认为这应该不是问题。

标签: swiftmacoskeychain

解决方案


来自同一开发者的应用程序不会自动共享对钥匙串项目的访问权限;您必须明确设置某种共享策略。具体操作方式取决于项目是存储在 iCloud 钥匙串还是旧式钥匙串中。

对于 iCloud 钥匙串中的项目,您需要定义一个访问组,将您的应用程序添加到该组,并将kSecAttrAccessGroup您的钥匙串项目的属性设置到该组。有关详细信息,请参阅 Apple 开发文档“在一组应用程序中共享对钥匙串项的访问”

对于非 iCloud(旧式)钥匙串中的项目,您需要为每个项目定义一个访问控制列表,其中列出了应授予访问权限的每个应用程序,以及访问权限的类型。有关详细信息,请参阅 Apple 开发文档“访问控制列表”

注意:我认为问题中的对话框表示非 iCloud 钥匙串项目。如果您输入密码并单击“始终允许”,它将添加一个访问控制条目,授予该应用访问该项目的权限。您可以在 Keychain Access 实用程序中查看访问控制列表。


推荐阅读