azure网站kudu rest api-身份验证

p4tfgftt  于 2021-06-20  发布在  Kudu
关注(0)|答案(2)|浏览(372)

我正在尝试使用powershell通过restapi将更新的内容文件放到azure网站上。但是,当我向 Invoke-RestMethod -Credentials 我返回了标准azure登录页的html。
如何通过powershell的kudu进行身份验证?谢谢。

kq4fsx7k

kq4fsx7k1#

在新的arm世界和最新的powershell中,您需要对@seth的答案进行一些调整。
具体来说,您获取发布凭据的方式是不同的,即前3行。剩下的我无耻地从@seth复制来完成这个片段。
请确保根据需要替换您的ResourceGroup/WebApp:

$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
j8yoct9x

j8yoct9x2#

您可以首先通过powershell获取该网站,然后使用该网站的发布凭据调用kudurestapi。下面的示例将获得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

相关问题