簡體   English   中英

Windows | Active Directory腳本| PHP

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM