Siti Web di Azure API Kudu REST – Autenticazione

Sto cercando di utilizzare PowerShell per inserire un file di contenuto aggiornato in un sito Web di Azure tramite l’API REST. Tuttavia, quando si forniscono le credenziali in Invoke-RestMethod -Credentials viene restituito l’HTML della pagina di accesso di Azure standard.

Come posso autenticarmi con Kudu di PowerShell? Grazie.

È ansible prima ottenere il sito Web tramite PowerShell e quindi utilizzare le credenziali di pubblicazione dal sito Web per chiamare l’API REST di Kudu. L’esempio seguente otterrà la versione di 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 

Nel nuovo mondo ARM e con l’ultimo PowerShell, dovrai apportare alcune modifiche alla risposta di @ Seth.

Nello specifico, il modo in cui ottieni le credenziali di pubblicazione è diverso, ovvero le prime 3 righe. Il resto l’ho copiato spudoratamente da @Seth per completare lo snippet.

Assicurati di sostituire YourResourceGroup / YourWebApp come appropriato:

 $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