如何自定义Mac OSX登录?

Mac*_*ado 7 authentication macos login

我需要为任何Apple的Macbook自定义整个登录屏幕和功能.

一般的想法是在用户凭据下控制以在外部认证服务器上认证该用户.

因此,定制UI非常重要,例如为第二个密码输入添加新的TextField或显示像QR码这样的图像.

到目前为止我做了什么

经过一些研究,我发现只有两个相关的项目:

1 - https://github.com/skycocker/NameAndPassword

然而,它是从4年前开始,似乎已经过时了.

2 - https://developer.apple.com/library/content/samplecode/PreLoginAgents/Introduction/Intro.html

我已经从Apple 部署了PreLoginAgent的示例代码,但它只在登录时打开外部应用程序.

我正在寻找什么

  • 在Mac OSX身份验证中处理自定义的最合适的方法是什么?

注意:我正在寻找一个解决方案,我可以避免中断登录.

The*_*man 5

我不确定为什么您要取消第一个链接(NameAndPassword

它是Apple的SFAuthorizationPluginView示例项目的“固定”版本。这是您需要使用的类。不幸的是,如您所见,Apple自己的示例未进行编译,而且文档非常薄,因此使其运行起来可能很棘手。

但是,我从上面的链接中获取了项目并将其编译到我的计算机上。

然后我将结果复制.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开发人员功能的典型代表。

有用的链接:

自定义登录屏幕Mac OSX(SFAuthorizationPluginView)

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

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