OS X Mavericks中的自定义登录/锁定屏幕

时间:2014-02-05 16:35:18

标签: xcode macos osx-mavericks sfauthorizationpluginview

我正在尝试覆盖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放在这个数据库中。

请让我知道我该怎么做,或者如果你知道其他方法来实现我的目标。

1 个答案:

答案 0 :(得分:11)

我找到了一种编辑数据库的方法 - 首先,我尝试了直接/var/private/db/auth.db sqlite修改,但它没有用,所以一段时间后我设法比我想象的更容易:< / p>

  1. security authorizationdb read system.login.console > outfile.plist

  2. 在此之后,您需要修改生成的outfile.plist,如在NullAuthPlugin自述文件中所述:

    <key>mechanisms</key>
      <array>
        <string>NameAndPassword:invoke</string>
    

    (最后一行是您需要添加到文件中的那一行)。

  3. 然后,将其保存到数据库:

    security authorizationdb write system.login.console < outfile.plist

  4. 然后,系统的任何登录/锁定屏幕上都会显示更改,但要小心!

    您将无法使用当前版本的NameAndPassword示例进行身份验证!

    确保在修改数据库之前建立一个有效的SSH连接到之前 ,这样您就可以使用其他设备恢复更改(只需重复数据库修改过程,但这一次删除您之前添加的行。)