Azure Automation вызывает API-интерфейс отдыха внутреннего приложения на гибридном рабочем месте, возвращая ошибку 400 - PullRequest
0 голосов
/ 08 декабря 2018

Я пытаюсь создать Runbook Azure Automation, чтобы разблокировать предварительную учетную запись AD.Как только учетная запись разблокирована, я хочу отправить тикет в наше приложение ITSM, которое имеет API.Я могу создать вызов на сервере в Windows PowerShell и получить код возврата 200.

Однако, когда я запускаю его из Azure Automation, я получаю код ошибки 400 неправильных запросов.Есть какие-нибудь мысли о том, почему я могу позвонить на сервер с помощью Windows PowerShell, но не с помощью Azure Automation на гибридном рабочем месте?

Модуль для Custom_ITSM_API_Module был доморощенным модулем и работает везде, где я его пробовал.Он работает на моем компьютере разработчика (Windows PowerShell) и на гибридном рабочем сервере (Windows PowerShell), но не при использовании Azure Automation.

Код:

Param
([object]$WebhookData) #this parameter name needs to be called WebHookData otherwise the webhook does not work as expected.
$VerbosePreference = 'continue'

Import-Module ActiveDirectory
Import-Module "Custom_ITSM_API_Module"

#region Verify if Runbook is started from Webhook.

# If runbook was called from Webhook, WebhookData will not be null.
if ($WebHookData){

# Collect properties of WebhookData
$WebhookName     =     $WebHookData.WebhookName
$WebhookHeaders  =     $WebHookData.RequestHeader
$WebhookBody     =     $WebHookData.RequestBody

# Collect individual headers. Input converted from JSON.
$From = $WebhookHeaders.From
$RequestData = (ConvertFrom-Json -InputObject $WebhookBody)
Write-Output -InputObject ('Input: {0}' -f $RequestData )
Write-Output ('WebhookBody: {0}' -f $WebhookBody)
Write-Output -InputObject ('Runbook started from webhook {0} by {1}.' -f $WebhookName, $From)

$User = Get-ADUser $RequestData.SamAccountName -Properties *
If($User.SamAccountName.count -ne 1 ){
throw "Found $($User.SamAccountName.count) user(s). Please make sure this user is unique"
}
else{
    Write-Output "Unlocking User"
    Unlock-ADAccount -Identity $User

    $RanByEmployeeID = $RequestData.RanByEmployeeID
    $Runby = Get-ADUser -Filter {EmployeeID -eq $RanByEmployeeID} -Properties EmployeeID
    $Description = "User Unlcoked<br>EmployeeID: $($User.EmployeeID)<br>SamAccountName: $($User.SamAccountName)<br>Unlocked at: $((Get-Date).ToString())"
    Write-Custom_ITSM_API_ModuleTicket -Title "Unlocked User $($User.Name)"-Description $Description

  }
}
else{
   Write-Error -Message 'Runbook was not started from Webhook' -ErrorAction stop
}

1 Ответ

0 голосов
/ 28 марта 2019

У меня была проблема с нашим брандмауэром и прокси.Эти серверы не могли общаться со всеми предложенными URL-адресами Azure / O365.Как только мы занесли все URL-адреса в белый список, я смог поговорить со своими внутренними приложениями.

...