Azure 资源管理器 .Net API 无法获取资源组
Azure Resource manager .Net API fails to get Resource group
我正在尝试编写一个独立程序来使用 Azure 资源管理器 .Net 库访问 Azure 资源组详细信息。根据文档,它在每个资源管理器请求中都需要 Azure AD 身份验证和令牌。所以我在 AD 中创建了一个网络应用程序并配置了密钥并使用它来生成令牌。
但是即使我在请求中将此令牌作为承载传递,下面的代码仍然失败。
m_resourceClient = new ResourceManagementClient(connection.GetCredentials());
m_resourceClient.HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", connection.GetAccessToken());
***ResourceGroupGetResult resourceGroupList = m_resourceClient.ResourceGroups.Get("PraveenTest")*** ;
错误信息:
AuthorizationFailed: The client '5919f7f9-####-####-####-074456eba98c' with object id '5919f7f9-####-####-####-074456eba98c' does not have authorization to perform action
'Microsoft.Resources/subscriptions/resourcegroups/read' over scope '/subscriptions/1f94c869-####-####-####-055e8ae15be3/resourcegroups/TestGroup'.
您的不记名令牌有效,但您还需要授予您的应用程序访问资源组的权限。
您可以使用以下 PowerShell 命令执行此操作:
New-AzureRmRoleAssignment
-ObjectId '5919f7f9-####-####-####-074456eba98c' `
-ResourceGroupName TestGroup `
-RoleDefinitionName Reader
如果您使用的 Azure PowerShell 版本低于 1.0,则 cmdlet 为 New-AzureRoleAssignment
。
我建议 Dushyant Gill's blog post 验证 ARM 请求。
我正在尝试编写一个独立程序来使用 Azure 资源管理器 .Net 库访问 Azure 资源组详细信息。根据文档,它在每个资源管理器请求中都需要 Azure AD 身份验证和令牌。所以我在 AD 中创建了一个网络应用程序并配置了密钥并使用它来生成令牌。
但是即使我在请求中将此令牌作为承载传递,下面的代码仍然失败。
m_resourceClient = new ResourceManagementClient(connection.GetCredentials());
m_resourceClient.HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", connection.GetAccessToken());
***ResourceGroupGetResult resourceGroupList = m_resourceClient.ResourceGroups.Get("PraveenTest")*** ;
错误信息:
AuthorizationFailed: The client '5919f7f9-####-####-####-074456eba98c' with object id '5919f7f9-####-####-####-074456eba98c' does not have authorization to perform action
'Microsoft.Resources/subscriptions/resourcegroups/read' over scope '/subscriptions/1f94c869-####-####-####-055e8ae15be3/resourcegroups/TestGroup'.
您的不记名令牌有效,但您还需要授予您的应用程序访问资源组的权限。
您可以使用以下 PowerShell 命令执行此操作:
New-AzureRmRoleAssignment
-ObjectId '5919f7f9-####-####-####-074456eba98c' `
-ResourceGroupName TestGroup `
-RoleDefinitionName Reader
如果您使用的 Azure PowerShell 版本低于 1.0,则 cmdlet 为 New-AzureRoleAssignment
。
我建议 Dushyant Gill's blog post 验证 ARM 请求。