我正在尝试覆盖 OS X 中的默认登录/锁定屏幕,以允许用户以提供密码之外的其他方式登录(想想指纹扫描仪或“敲门解锁”的工作原理),我正在寻找现在花了几个小时寻找一种方法 - 我发现看起来有用的是授权插件 ADC 引用和此示例:https://developer.apple.com/library/mac/samplecode/NameAndPassword/Introduction/Intro.html#//apple_ref/doc/uid/DTS10004022
这个NameAndPassword xcode项目有点过时,但我通过指定Base SDK(有一个硬编码的错误路径)就成功地构建了它,然后我将生成的.bundle文件放入/Library/Security/SecurityAgentPlugins
目录。锁定屏幕后没有任何变化,但我知道我需要将授权角色添加到 /etc/authorization
文件中,我知道 Mavericks 中不再存在该角色(有这个 auth.db 文件和整个身份验证 API),但我因此被困在这里 - 我不知道如何将 NameAndPassword 放入此数据库中。
请告诉我如何正确地做到这一点,或者您是否知道实现我的目标的其他方法。
最佳答案
我找到了一种编辑数据库的方法 - 起初,我尝试直接 /var/private/db/auth.db
sqlite 修改,但它不起作用,所以一段时间后我设法比我想象的更容易做到这一点:
security authorizationdb read system.login.console > outfile.plist
此后,您需要修改生成的
outfile.plist
正如 NullAuthPlugin 自述文件中所述:<key>mechanisms</key> <array> <string>NameAndPassword:invoke</string>
(最后一行是您需要添加到文件中的行)。
然后,将其保存到数据库:
security authorizationdb write system.login.console < outfile.plist
然后,更改应该可以在系统的任何登录/锁定屏幕上看到,但是要小心!
您将无法使用当前版本的 NameAndPassword 示例进行身份验证!
在修改数据库之前,请务必与 Mac 建立有效的 SSH 连接,这样您就可以使用其他设备恢复更改(只需重复数据库修改过程,但这次删除您之前添加的行)。
关于xcode - OS X Mavericks 中的自定义登录/锁定屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21582995/