我正在尝试覆盖OS X中的默认登录/锁定屏幕,以允许用户以提供密码之外的其他方式登录(想想指纹扫描仪或“敲击解锁”的工作原理),我正在寻找为了一种方法现在这么做几个小时 - 我发现看起来很有用的是Authorization Plugin 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文件和整个auth API),但是因此我被困在这里 - 我不知道如何将NameAndPassword放在这个数据库中。
请让我知道我该怎么做,或者如果你知道其他方法来实现我的目标。
答案 0 :(得分:11)
我找到了一种编辑数据库的方法 - 首先,我尝试了直接/var/private/db/auth.db
sqlite修改,但它没有用,所以一段时间后我设法比我想象的更容易:< / p>
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示例进行身份验证!
确保在修改数据库之前建立一个有效的SSH连接到之前 ,这样您就可以使用其他设备恢复更改(只需重复数据库修改过程,但这一次删除您之前添加的行。)