首页 > 解决方案 > 检查是否可以从 macOS 机器访问 AD 域控制器

问题描述

有一个软件可以根据 Active Directory 域控制器(对于加入域的机器)的可访问性来更改其行为。例如,如果 LAN 内的机器和域控制器可访问,则所有功能都可用。如果机器脱离 LAN,则该软件的某些功能将被禁用。

它在使用标准 Win32 API 的 Windows 上运行良好,但到目前为止我找不到为 macOS 实现它的方法。我找不到任何 API。我尝试了一些命令行工具。例如,

dscl "/Active Directory/<DOMAIN NAME>" read / dsAttrTypeNative:DomainName

odutil show nodenames

即使我断开 macOS 机器与 AD LAN 的连接,它们仍然会显示大约 30 分钟的信息,就像仍然可以访问域控制器一样。

我无法删除整个 Open Directory AD 缓存来制作刷新信息的工具,因为系统和其他应用程序都在使用缓存。我不想改变整个系统的行为。我不能为此终止(重新启动)服务,因为我需要经常(每 2-5 分钟)执行此操作。

我知道我可以使用ldapsearch(或 LDAP C++ 库)来检查 AD 域控制器的可访问性,但我的软件对域控制器配置一无所知。它没有任何凭据来请求信息。此外,在 Windows API 的情况下,默认使用 Kerberos。如果是 ldapsearch,则必须对其进行配置。

那么,是否有任何 macOS API(Objective C、C++)或任何系统命令工具可以在没有额外配置的情况下使用来检查 AD 域控制器是否可访问?

标签: objective-cmacosactive-directoryldapdscl

解决方案


推荐阅读