从 macOS Web 服务器远程将用户添加到 Active Directory

从 macOS Web 服务器远程将用户添加到 Active Directory

我有一个 Active Directory 服务器,运行在 Windows Server 2012 R2 上。我还有一个 Web 服务器,运行在 macOS El Capitan 上。有一个外部 AD 服务器,我只能使用它来查询用户(这已经在运行)。

我希望外部 AD 服务器上的新用户能够自行注册。他们应该向外部 AD 服务器进行身份验证,如果他们存在,则应该在我的 2012 AD 服务器上为他们创建一个帐户。他们还会在注册时添加一些信息(电子邮件地址等)。整个过程应该通过网站完成,该网站应在 macOS 网络服务器上运行。

我遇到的问题是如何从 macOS Web 服务器在 AD 服务器上创建新帐户。我研究了几种可能性,但所有这些可能性要么存在很大缺陷,要么我对其了解不够,无法实施:

  • 使用锁定域管理员的 PHP 查询,使用本机 PHP 工具或类似库隱藏(我不知道这是否足够安全或者比下面列出的 SOAP 方法更不安全)。
  • 通过 ssh 执行无需密码的 PowerShell 脚本(非常不安全。我不希望访问我的网络服务器的人对我的 AD 服务器有那么多的访问权限)。
  • 在 AD 服务器上实现 (REST 或 SOAP) Web 服务(我猜是相当安全的。我不知道 Windows IIS 是否已经集成了此功能。搜索时没有找到任何东西)。

我的问题是:从非 Windows 服务器远程将用户添加到 Active Directory 的简单且安全的方法是什么?

答案1

新的改进答案!

以下是我的做法:

openssh 有一个 Windows 端口,openssh 允许您指定一个命令来与 authorized_keys 文件中的密钥关联。阅读并查看部分,authorized_keys file format具体command="command" 编写您的帐户创建脚本并将其添加为"command"。请注意有关"OPENSSH_ORIGINAL_COMMAND"

需要记住的最重要的一点是,互联网会试图破解这个东西,所以一定要对传入的数据进行清理、消毒,甚至安乐死。记住,你对无密码 ssh 密钥的担心是有人会窃取密钥。因此,当你编写脚本时,假设每个坏人都已经拥有密钥。无论你使用什么技术(php、肥皂、洗发水等),同样的担忧都适用

希望这对你有帮助!

旧的、没有帮助的答案!

我认为您可以通过 LDAP 做到这一点。我找到了一个包含创建用户的 C# 资源,它通过 LDAP 实现。理论上,您可以使用 openldap(ldapsearch 等...)或您选择的编程语言中的 LDAP 库执行相同的操作。

https://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C#34

不过这篇文章已经有 10 年了,所以可能不再有效。

我目前使用 LDAP 作为远程 AD 服务器的只读接口,所以至少我知道 LDAP 仍然很重要。

希望有帮助! -Dylan

相关内容