【问题标题】:Launch Daemon is not able to access keychain entries启动守护程序无法访问钥匙串条目
【发布时间】:2020-07-29 05:30:50
【问题描述】:

我有一个命令行进程,它正在调用 API 并从钥匙串中获取令牌。当我在终端使用/不使用 sudo 独立运行此过程时,它能够访问钥匙串条目。现在我已将其转换为启动守护程序并尝试将其作为启动守护程序执行,然后它无法访问令牌并给我错误“无法从钥匙串读取存储的项目(状态:-25308)”。我正在使用下面的 plist 来创建启动守护进程。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>TestAuth_SilentDaemon</string>
    <key>Program</key>
    <string>*complete path of TestAuth_SilentDaemon*</string>  
    <key>KeepAlive</key>
    <true/>
    <key>SessionCreate</key>
    <true/>
    <key>UserName</key>
    <string>admin</string>
</dict>
</plist>

有人可以建议我在这里缺少什么吗?

【问题讨论】:

    标签: macos msal launch-daemon


    【解决方案1】:

    它似乎可以连接到errSecInteractionNotAllowed。 错误 -25308 是 errSecInteractionNotAllowed 这通常意味着您正在尝试访问在设备锁定时无法访问的钥匙串项。

    它主要被描述为 iOS 问题,但 MS 文档也谈到:

    在 macOS 10.15+ 上,MSAL 的行为在 iOS 和 macOS 之间是相同的。 MSAL 使用钥匙串访问组进行钥匙串共享。

    查看答案:https://stackoverflow.com/a/9735506/1595293

    根据帖子:

    【讨论】:

    • 实际上我在这里尝试的是从使用 sudo 运行的启动守护程序访问登录钥匙串项目。守护程序正在尝试查看系统钥匙串并给我错误“找不到钥匙串项目:25300”。
    • 所以后来我尝试使用“su user_name”以当前登录用户模拟它,并尝试在没有 sudo 的情况下运行守护进程。然后在那种情况下,我收到此错误“不允许用户交互:25308”。现在我很惊讶它在模拟后无法访问钥匙串项目。理想情况下,当我直接从终端独立运行我的进程并且它能够访问登录钥匙串项时,也会发生同样的事情。
    猜你喜欢
    • 2017-11-29
    • 2012-06-21
    • 2018-05-14
    • 1970-01-01
    • 2015-03-08
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    相关资源
    最近更新 更多