macOS 催化剂上钥匙串项目的 PersistentRef
Posted
技术标签:
【中文标题】macOS 催化剂上钥匙串项目的 PersistentRef【英文标题】:PersistentRef of keychain item on macOS catalyst 【发布时间】:2021-02-11 16:51:40 【问题描述】:背景
我正在尝试构建一个使用本机 IKEv2 实现连接到 *** 的应用。该应用程序应为 ios 构建,但也应使用 Catalyst 平台在 macOS 上运行。
情况
在 iOS/macOS 中使用本机 IKEv2 实现连接到 *** 时 - 要使用用户名和密码身份验证,应用程序必须将持久钥匙串引用传递给包含密码的钥匙串项。 (Reference)
问题
在 iOS 上它运行良好,但在 Catalyst 平台上启动 *** 连接时,*** 服务无法使用给定的持久引用检索密码。控制台打印:
[] (null): Failed to copy content, SecKeychainItemCopyContent returned The contents of this item cannot be retrieved.
钥匙串项存储在钥匙串中,持久引用不是nil
,但由于某种原因,操作系统的***服务无法检索密码。
如果我尝试使用相同的持久引用检索密码 - 一切都按预期工作,并且密码被检索。
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrPersistentReference as String: persistentRef,
kSecReturnData as String: true
]
var item: CFTypeRef?
let status = SecItemCopyMatching(query as CFDictionary, &item)
任何信息将不胜感激。将密码保存到钥匙串时可能应该添加一些标志?在 Catalyst 平台上从钥匙串中检索持久引用时,也许应该添加一些标志?
【问题讨论】:
嗨!你找到解决办法了吗? 嗨。不,我没有。似乎 Catalyst 还没有完全发挥作用,所以我暂时放弃了这个主题。但是,如果您找到任何有价值的信息 - 请分享,这将非常有价值。 谢谢,我们决定放弃尝试并创建一个新的 macOS 目标... 【参考方案1】:我直接通过苹果的反馈支持问了这个问题,得到的答案是:
【讨论】:
以上是关于macOS 催化剂上钥匙串项目的 PersistentRef的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio Code 上调试 Flutter 应用程序时如何停止 MacOS 上的“钥匙串访问”权限对话框?
使用用户 _www 或守护进程设置 macOS 钥匙串搜索列表
使用无人值守的 xcodebuild 管理钥匙串以协同设计 macOS / iOS 应用程序
有没有一种快速简便的方法来转储 MacOS X 钥匙串的内容?