[英]Windows | Active Directory script | PHP
我有一個可以更改活動目錄的PHP應用程序。 現在我有了一個powershell腳本,請看下面($ username是通過php傳遞的):
Disable-ADAccount -Identity $username
如果我通過命令提示符運行該腳本,則可以正常運行。 但是,如果我通過PHP(cgi)運行它,它將無法正常工作且未進行更改,瀏覽器中也不會出現錯誤。
因此,經過反復試驗,我發現從活動目錄中讀取與php一樣可以正常工作,例如以下腳本:
Get-ADUser $username -Properties GivenName
但是,寫入活動目錄(例如提到的第一個腳本)無效。
我設法查看了Apache日志,發現了以下有用的信息:
Disable-ADAccount : Insufficient access rights to perform the operation
At C:\scripts\lock.ps1:4 char:1
+ Disable-ADAccount -Identity $username
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (12PotterH:ADAccount) [Disable-ADA
ccount], ADException
+ FullyQualifiedErrorId : ActiveDirectoryServer:8344,Microsoft.ActiveDirec
tory.Management.Commands.DisableADAccount
我該如何克服?
注意事項: -我正在運行Windows Server 2012
我已授予php-cgi,powershell,cmd,xampp文件夾的完全權限
我正在使用Xampp(Apache)
實際的活動目錄位於另一台本地服務器上,然后位於運行xampp的本地服務器上
我還嘗試過將server參數添加到腳本中,如下所示:
Disable-ADAccount -Identity $username - Server SERVERNAME
如果您未在powershell cmdlet中指定憑據,則可能會嘗試在托管php站點的服務器上將腳本作為應用程序池標識運行。
解決此問題的正確方法是在powershell腳本中指定憑據。 大多數AD cmdlet都可以使用-credential參數。
這是一個例子:
$Username = 'domain\username'
$Password = 'Password123'
$pass = ConvertTo-SecureString -AsPlainText $Password -Force
$Cred = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$pass
Get-ADUser $SamAccountName -Credential $Cred
編輯:使用以純文本提供的憑據的版本
要補充別人的意見,如果您的應用程序將要運行這些操作,則可以考慮使用憑據文件。 它不是十分安全,但是我也不知道將憑據存儲在應用程序中的安全性如何。 已經導出到文件的憑證對象確實有用。
另一種選擇是確保服務/應用程序。 池帳戶在Active Directory中具有適當的訪問權限。 如果要這樣做,我強烈建議您確保它與其他應用程序池標識的帳戶不同,並且也可能與其他站點分開。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.