gpt4 book ai didi

azure - 调用 New-AzureRmADApplication 时无法将 TokenCloudCredentials 转换为 AccessTokenCredential

转载 作者:行者123 更新时间:2023-12-03 05:58:38 24 4
gpt4 key购买 nike

我正在编写一个 PowerShell 部署脚本,它可以自动创建我的 Azure 资源和随附的 ServicePrincipal。

这是我正在使用的代码,我已经对其进行了测试,并且在使用最新的 Azure 1.0.4 SDK 模块直接从 PowerShell 运行时可以正常工作:

$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

当我在 Visual Studio 中使用 ResourceGroup 项目部署脚本运行此代码时,出现以下错误:

New-AzureRmADApplication : Unable to cast object of type 'Microsoft.Azure.TokenCloudCredentials' to type '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 网站上没有列出任何管理证书。

最佳答案

在 AzureRMAD* cmdlet 中使用基于 token 的身份验证时,这是一个问题(即错误)。当您从 VS 运行脚本时,VS 使用您从 VS 登录获得的 token 来避免提示进行身份验证。要解决此问题,您必须使用凭据在 VS 外部运行它。

有一个内部工作项目跟踪此问题,但如果您想监控进度,可以在此处提交问题:https://github.com/Azure/azure-powershell/issues/

关于azure - 调用 New-AzureRmADApplication 时无法将 TokenCloudCredentials 转换为 AccessTokenCredential,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36004523/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com