4

我正在尝试在 MacOSX 10.9.1 (Mavericks) 中扩展登录屏幕。正如我发现的那样,这可以通过实现一个新的身份验证插件并将其安装到授权数据库中来实现。

我下载了 NameAndPassword 示例,该示例显示了如何实现接口并覆盖/扩展SFAuthorizationPluginView。但问题是我无法在小牛队下建造它。所以我决定下载第二个例子,它叫做 NullAuthPlugin。这个可以编译,但我没有找到如何安装它。

所以我的问题是,如果有一个好的和更新的教程(技术说明是表格 2008-09-16)?

第二个问题是,如果这可以用 C# (Xamarin.Mac / MonoMac) 开发,因为我不太擅长开发 Objective-C / C / C++。

谢谢!

4

2 回答 2

6

好吧,这些错误已多次向 Apple 报告,但到目前为止他们没有做任何事情。最简单的答案是:您需要 NameAndPassword 插件的补丁版本 - 官方版本已损坏。我把我的固定插件放在 GitHub 上:https ://github.com/skycocker/NameAndPassword

重要的是你更换

<string>loginwindow:login</string>

在授权策略数据库中使用

<string>NameAndPassword:invoke</string>

否则它不会让你登录。如果没有Merlin69 的帮助,我不会解决这个问题。

于 2014-02-26T19:02:20.703 回答
-1

首先:永远,永远,永远都不会通过将登录插件放在控制台登录权中来开始调试登录插件。您需要在身份验证数据库中创建一个特殊的测试“虚拟”权限,完全独立于操作系统在其操作期间可能需要调用的任何其他权限。称它为“MyTestRight-RemoveMeAfterTest”。

创建一个类似于以下内容的 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>class</key>
    <string>evaluate-mechanisms</string>
    <key>comment</key>
    <string>Used to validate a terminal user.</string>
    <key>mechanisms</key>
    <array>
        <string>NameAndPassword:invoke</string>
    </array>
</dict>
</plist>

使用终端中的“security”命令安装它:

“安全授权数据库写入 MyTestRight-RemoveMeAfterTest < MyTestRight-RemoveMeAfterTest_plist_file”

永远不要手动编辑 auth db,即使您仍然可以这样做,在 10.9 之前的 osx 上就是这种情况。如果你犯了一个错误,操作系统无法解析文件,你将陷入痛苦的世界。我去过那里。我多年来一直在做这些插件。如果操作系统无法读取文件,如果您的插件在登录时挂起,您将处于相同的情况 - 在没有桨的情况下沿着小溪前进。如果您没有远见启用 SSH,您将不得不启动到另一个分区或从时间机器备份启动。在后一种情况下,您最好将最近的编辑保存在某个外部驱动器上。

在数据库中安装正确后,您应该从外部程序对其进行测试。

您需要调用安全基础设施,如名称和密码示例中包含的自述文件中所示,并请求您的权利,就像操作系统一样。

使用任何苹果样品时要小心。仅将它们用作指南。NameAndPassword 有错误并且永远无法运行。它最后一次更新是在 2006 年,并使用了许多现已过时的功能。它实际上并没有做任何事情,而只是一个外壳。

于 2014-12-14T01:32:36.517 回答