Невозможно привести TokenCloudCredentials к AccessTokenCredential при вызове New-AzureRmADApplication
Я пишу сценарий развертывания PowerShell, который автоматизирует создание моих ресурсов Azure, и сопровождающий ServicePrincipal.
Вот код, который я использую, который я протестировал и работает при запуске непосредственно из PowerShell с последним модулем Azure 1.0.4 SDK:
$ResourceGroupName = "my-resource-group"
$ADAppIdentifierUri = [string]::Concat("https://", $ResourceGroupName, ".azurewebsites.net")
# Generate a password for the AD application
$ServicePrincipalPassword = [Guid]::NewGuid().ToString().Replace("-", "")
# Create the Azure AD Application and service principal, and only assign access to our resource group
$AzureADApplication = New-AzureRmADApplication -DisplayName $ResourceGroupName -HomePage $ADAppIdentifierUri -IdentifierUris $ADAppIdentifierUri -Password $ServicePrincipalPassword
Когда я запускаю этот код с помощью сценария развертывания проекта ResourceGroup в Visual Studio, я получаю следующую ошибку:
New-AzureRmADApplication: невозможно привести объект типа "Microsoft.Azure.TokenCloudCredentials" к типу "Microsoft.Azure.Common.Authentication.AccessTokenCredential".
Согласно трассировке стека, исключение было сгенерировано при запуске команды New-AzureRmADApplication, поэтому, к сожалению, это происходит внутри кода Azure SDK.
Я просмотрел исходный код SDK в следующих файлах и не смог найти никакой информации:
Я могу найти только одного человека, который столкнулся с этой же ошибкой по этой ссылке здесь: https://azure.microsoft.com/en-us/documentation/articles/resource-group-authenticate-service-principal/
Тем не менее, решение там не имеет смысла для меня, потому что я не использую сертификат управления для проверки подлинности, и у меня нет никаких сертификатов управления, перечисленных на сайте manage.windowsazure.com.
1 ответ
Это проблема (т. Е. Ошибка) при использовании аутентификации на основе токенов с командлетами AzureRMAD*. Когда вы запускаете скрипт из VS, VS использует токен, который вы используете для входа в VS, чтобы не запрашивать аутентификацию. Чтобы обойти это, вы должны запустить его вне VS с использованием учетных данных.
Это отслеживается внутренним рабочим элементом, но если вы хотите следить за прогрессом, вы можете подать проблему здесь: https://github.com/Azure/azure-powershell/issues/