我正在尝试扩展MacOSX 10.9.1(Mavericks)中的登录屏幕。正如我所发现的,这可以通过实现一个新的身份验证插件并将其安装到授权数据库中来实现。
我已经下载了NameAndPassword示例,它展示了如何实现接口并覆盖/扩展SFAuthorizationPluginView。但问题是,我不能在小牛队的领导下建立它。所以我决定下载第二个例子,它叫做NullAuthPlugin。这个可以编译,但我没有找到如何安装它
所以我的第一个问题是,是否有一个好的更新教程(TechNotes的格式是2008-09-16)?
第二个问题是,这是否可以用C#(Xamarin.Mac/MonoMac)开发,因为我不太擅长开发Objective-C/C/C++。
谢谢!
好吧,这些错误已经向苹果报告了多次,但到目前为止他们没有采取任何措施。最简单的答案是:你需要一个修补版的NameAndPassword插件——官方的插件坏了。我把我的固定插件放在GitHub上:https://github.com/skycocker/NameAndPassword
更换非常重要
<string>loginwindow:login</string>
具有的授权策略数据库中的行
<string>NameAndPassword:invoke</string>
否则它不会让你登录。如果没有Merlin69的帮助,我是无法解决这个问题的。
首先:永远不要通过将登录插件放在控制台登录权限内来调试它。您需要在authdb中创建一个特殊的测试"伪"权限,完全独立于操作系统在操作过程中可能需要调用的任何其他权限。可以称之为"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>
使用来自终端的"安全"命令安装:
"安全授权数据库写入MyTestRight RemoveMeAfterTest<MyTestRight-RemoveMeAfterTest_plist_file">
永远不要手动编辑auth-db,即使你仍然可以这样做,10.9之前的osx就是这样。如果你犯了一个错误,操作系统无法解析文件,你将陷入一个充满伤害的世界。我去过那里。我做这些插件已经很多年了。如果操作系统无法读取文件,如果你的插件在登录时挂起,你也会遇到同样的情况——没有桨。如果您没有启用SSH的先见之明,您将不得不引导到另一个分区或从时间机器备份启动。在后一种情况下,您最好将最近的编辑保存在某个外部驱动器上。
在数据库中安装权限后,应该从外部程序对其进行测试。
您需要调用安全基础设施,如名称和密码示例中包含的自述文件中所示,并请求您的权限,就像操作系统一样。
使用任何苹果样品时都要小心。仅将其用作指南。NameAndPassword有错误,无法运行。它上一次更新是在2006年,使用了许多现已过时的功能。它实际上什么也不做,只是一个外壳。