Active-Directory

從 macOS 網路伺服器遠端將使用者添加到 Active Directory

  • May 22, 2017

我有一個 Active Directory 伺服器,在 Windows Server 2012 R2 上執行。我還有一個網路伺服器,在 macOS El Capitan 上執行。有一個外部 AD 伺服器,我可以(僅)使用它來查詢使用者(這已經在工作)。

我希望外部 AD 伺服器上存在的新使用者能夠註冊自己。他們應該向外部 AD 伺服器進行身份驗證,如果存在,應該在我的 2012 AD 伺服器上為他們創建一個帳戶。他們還會在註冊時添加一些資訊(電子郵件地址,…)。整個過程應通過網站完成,該網站應在 macOS 網路伺服器上執行。

我偶然發現的部分是如何從 macOS 網路伺服器在 AD 伺服器上創建新帳戶。我研究了幾種可能性,所有這些要麼有很大的缺陷,要麼我對實施的了解不夠:

  • 使用帶有鎖定域管理員的 PHP 查詢,使用原生 PHP 工具或像adLDAP這樣的庫(我不知道這是否足夠安全,或者比下面列出的 SOAP 方法更不安全)。
  • 通過沒有密碼的 ssh 執行 PowerShell 腳本(非常不安全。我不希望訪問我的網路伺服器的人對我的 AD 伺服器有太多的訪問權限)。
  • 在 AD 伺服器上實現(REST 或 SOAP)Web 服務(我想很安全。我不知道 Windows IIS 是否已經集成了這個。搜尋時沒有找到任何東西)。

我的問題是:從非 Windows 伺服器遠端將使用者添加到 Active Directory 的簡單且安全的方法是什麼?

新改進的答案!

這是我的做法:

有一個 windows 埠的 openssh,openssh 允許您指定一個命令以與 authorized_keys 文件中的密鑰關聯。閱讀內容並查看部分authorized_keys file format並專門command="command" 編寫您的帳戶創建腳本並將其添加為"command". 注意一點關於"OPENSSH_ORIGINAL_COMMAND"

要記住的最重要一點是,網際網路會嘗試破解這個東西,所以請確保你對傳入的數據進行消毒、消毒甚至安樂死。請記住,您對無密碼 ssh 密鑰的擔憂是有人會竊取密鑰。所以,當你寫劇本的時候,假設每個壞人都已經有了鑰匙。無論您使用何種技術(php、soap、shampoo..etc),同樣的問題都適用

希望這會有所幫助!

老沒有幫助的答案!

我認為您可以通過 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 仍然很重要。

希望有幫助!-迪倫

引用自:https://serverfault.com/questions/850608