swift - macOS 催化剂上钥匙串(keychain)项目的 PersistentRef

标签 swift macos keychain mac-catalyst nevpnmanager

背景
我正在尝试构建一个使用 native IKEv2 实现连接到 VPN 的应用程序。该应用程序应该为 iOS 构建,但也可以使用 Catalyst 平台在 macOS 上运行。
情况
在 iOS/macOS 中使用 native IKEv2 实现连接到 VPN 时 - 要使用用户名和密码身份验证,应用程序必须将持久钥匙串(keychain)引用传递给包含密码的钥匙串(keychain)项。 (Reference)
问题
在 iOS 上它运行良好,但在 Catalyst 平台上启动 VPN 连接时,VPN 服务无法使用给定的持久引用检索密码。控制台打印:

[] (null): Failed to copy content, SecKeychainItemCopyContent returned The contents of this item cannot be retrieved.
钥匙串(keychain)项存储在钥匙串(keychain)中,持久引用不是nil ,但由于某种原因,操作系统的 VPN 服务无法检索密码。
如果我尝试使用相同的持久引用来检索密码 - 一切都按预期工作并且密码被检索。
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)

任何信息将不胜感激。将密码保存到钥匙串(keychain)时可能应该添加一些标志?在 Catalyst 平台上从钥匙串(keychain)中检索持久引用时,也许应该添加一些标志?

最佳答案

我通过苹果的反馈支持直接问了这个问题,得到的答案是:
apple support

关于swift - macOS 催化剂上钥匙串(keychain)项目的 PersistentRef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64587822/

相关文章:

swift - macOS 钥匙串(keychain)共享绕过密码对话框

IOS Swift assetForURL 错误

ios - 无法插入新的 socket 连接 : Could not find any information for the class named

macos - 我怎样才能摆脱这个 osascript 输出?

iphone - 在 Xcode 中使用非默认钥匙串(keychain)

ios - SecItemUpdate() 不断返回 errSecParam,我不明白为什么

ios - 画一个半圆按钮iOS

ios - 如何从 UiTableViewCell 更改 View Controller 中字典的值

java - JDialogs 导致我的应用程序菜单在 OSX 上消失

Cocoa - 两个 NSImage 之间的淡入淡出?