Веб-сайты Azure REST API Kudu - аутентификация

Я пытаюсь использовать PowerShell, чтобы поместить обновленный файл содержимого на веб-сайт Azure через API REST. Тем не менее, при предоставлении моих учетных данных в Invoke-RestMethod -Credentials Мне возвращается HTML-код стандартной страницы входа в Azure.

Как я могу пройти аутентификацию с помощью Kudu из PowerShell? Благодарю.

2 ответа

Решение

Сначала вы можете получить веб-сайт через Powershell, а затем использовать учетные данные для публикации с веб-сайта для вызова API-интерфейса Kudu REST. Пример ниже получит версию Kudu.

$website = Get-AzureWebsite -Name "WebsiteName"

$username = $website.PublishingUsername
$password = $website.PublishingPassword
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))

$apiBaseUrl = "https://$($website.Name).scm.azurewebsites.net/api"

$kuduVersion = Invoke-RestMethod -Uri "$apiBaseUrl/environment" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method GET

В новом мире ARM и с новейшей PowerShell вам нужно будет внести некоторые коррективы в ответ @Seth.

В частности, другой способ получения издательских кредитов - первые 3 строки. Остальное я беззастенчиво скопировал из @Seth для завершения фрагмента.

Обязательно замените YourResourceGroup/YourWebApp соответствующим образом:

$creds = Invoke-AzureRmResourceAction -ResourceGroupName YourResourceGroup -ResourceType Microsoft.Web/sites/config -ResourceName YourWebApp/publishingcredentials -Action list -ApiVersion 2015-08-01 -Force

$username = $creds.Properties.PublishingUserName
$password = $creds.Properties.PublishingPassword
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))

$apiBaseUrl = "https://$($website.Name).scm.azurewebsites.net/api"

$kuduVersion = Invoke-RestMethod -Uri "$apiBaseUrl/environment" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method GET
Другие вопросы по тегам