Невозможно привести 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://github.com/Azure/azure-powershell/blob/f803b991daa7eeeea1217238ab071c8d83de34be/src/ResourceManager/Resources/Commands.Resources/ActiveDirectory/NewAzureADApplicationCommand.cs

https://github.com/Azure/azure-powershell/blob/956d0ca795acfce67d8f142bf059ab2b8ab2c67b/src/ResourceManager/Resources/Commands.Resources/Models.ActiveDirectory/ActiveDirectoryClient.cs

https://www.symbolsource.org/Public/Metadata/NuGet/Project/Microsoft.Azure.Graph.RBAC/1.6.0-preview/Release/.NETFramework,Version%3Dv4.0/Microsoft.Azure.Graph.RBAC/Microsoft.Azure.Graph.RBAC/Generated/GraphRbacManagementClient.cs?ImageName=Microsoft.Azure.Graph.RBAC

Я могу найти только одного человека, который столкнулся с этой же ошибкой по этой ссылке здесь: 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/

Другие вопросы по тегам