如何自定义Mac OSX登录界面?

8
我需要自定义任何苹果Macbook的整个登录界面和功能。
总体想法是对用户凭据进行控制,以在外部身份验证服务器上验证该用户。
因此,重要的是要自定义UI,例如添加第二个密码输入的新TextField或显示像QR码这样的图像。
到目前为止,我已经进行了一些研究,发现只有两个相关项目:
1 - https://github.com/skycocker/NameAndPassword 但它是4年前的,似乎已经过时。
2 - https://developer.apple.com/library/content/samplecode/PreLoginAgents/Introduction/Intro.html 我已经部署了来自苹果的PreLoginAgent示例代码,但它只在登录时打开一个外部应用程序。
我正在寻找的是:
  • 如何在Mac OSX身份验证中处理自定义的最合适方式?

注意:我正在寻找一种解决方案,可以避免破坏登录。


1
我猜你已经知道OSX可以处理可插拔认证模块,但完整的文档/示例可能有点难以获得。 - Michael Dautermann
1
@MichaelDautermann 是的,文档太过宽泛了。 - Machado
@Machado,了解您想要进行什么样的自定义将非常有帮助-即您的最终目标是什么?现在问题还比较广泛。 - TheNextman
@TheNextman请检查编辑。 - Machado
1个回答

8

我不确定您为什么要排除您的第一个链接(NameAndPassword)

这是一个苹果的示例项目 SFAuthorizationPluginView 的“修复”版本。那就是你需要使用的类。不幸的是,正如您所看到的苹果自己的样本没有编译,并且文档非常薄弱,可能很难让它工作。

然而,我从上面的链接中取出了该项目并在我的设备上编译了它。

然后我将生成的.bundle 复制到/Library/Security/SecurityAgentPlugins

接下来,您需要在授权数据库中注册插件:

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

  2. 通过替换修改outfileplist中的内容:

    <string>loginwindow:login</string>

使用以下内容替换: <string>NameAndPassword:invoke</string>

  1. 现在,更新数据库:

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

现在,退出并登录屏幕将反映自定义视图。

安装完成后,您提供的链接是一个很好的简单 PoC。如果您需要帮助定制 SFAuthorizationPluginView 以实现您想要的功能,我建议您针对此发布具体问题。

仅因 API 较旧而不意味着它已过时。多年来登录屏幕并没有太多改变。至于过时的示例和文档不良,这似乎是这些更为晦涩 MacOS 开发人员特性的典型情况。

有用的链接:

Customize Login Screen Mac OSX (SFAuthorizationPluginView)

Custom login/lock screen in OS X Mavericks

https://developer.apple.com/documentation/securityinterface/sfauthorizationpluginview


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接