API 请求的钥匙串访问触发警报

Keychain Access for API requests triggers alert

我将从 API 登录过程中收到的令牌存储在用户的钥匙串中。然后,对于对 API 的所有进一步请求,我从钥匙串中获取令牌以发送到 API。对 API 发出的每个请求都会发生这种情况。据我了解,钥匙串是存储敏感信息的正确位置,因此我没有将令牌存储在用户默认设置中。

在 iOS 上,一切都按预期工作,但在 macOS 上,出现一条警告,提示应用程序想要访问钥匙串。然后用户可以 select 允许它一次或总是允许它。这有两个主要问题:

  1. 如果用户选择“一次”,该对话框将随着应用程序执行的每个请求一遍又一遍地出现。

  2. 如果用户选择“始终”,该对话框将在一段时间内不会出现,但过一会儿它仍会重新出现。

为什么这种行为在 iOS 和 macOS 之间完全不同?还是我忘记配置了什么?

从安全的角度来看,是否可以在应用程序启动时读取一次令牌并将其存储在 属性 中?

虽然 iOS 上的钥匙串和 macOS 有很多相似之处,但两者之间有一个很大的区别。 iOS 只有一个钥匙串,而 macOS 可以创建任意数量的钥匙串。您可以找到有关 here.

的更多信息

这意味着我们必须让 macOS Keychain 表现得像 iOS Keychain,我们可以通过 kSecUseDataProtectionKeychain 密钥,记录在 here 中。将此标志设置为 true 应该可以解决您的问题。