【Azure Developer】使用 Azure VM 上的用户分配托管标识访问 Azure Key Vault 中国区代码示例

简介: 【Azure Developer】使用 Azure VM 上的用户分配托管标识访问 Azure Key Vault 中国区代码示例

问题描述

Global版本的Azure Key Vault 文档中,有一节介绍在Azure VM中使用标识获取访问令牌,调用Key Vault中的资源。但是在示例中,只有curl的命令执行,而没有代码部分。并且访问的resource都是azure.com,那对于中国区,有那些是需要修改的呢? 使用代码如何完成Token的获取呢?

 

 

 

问题解决

根据原文中curl的命令

curl -H Metadata:true "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com/&client_id=<UAMI CLIENT ID>"

把修改为C#代码:

private static readonly string TokenUrl = @"http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.com/&client_id=<UAMI CLIENT ID>";
private static string GetToken(string tokenUrl)
        {
            var request = WebRequest.Create(tokenUrl);
            request.Headers.Add("Metadata", "true");
            var response = request.GetResponse();
            return ParseWebResponse(response, "access_token");
        }

需要注意修改的地方为:

1) Resource需要修改为中国区endpoint: https%3A%2F%2Fvault.azure.cn

2) Resource 参数值必须与 Azure AD 预期值完全一致。 如果使用资源管理器资源 ID,必须在 URI 的结尾添加斜线。

3)<CLIENT ID> 必须替换为VM中唯一的一个用户标记,当VM有多个用户标记的时候,会遇见400/403错误。

 

 

参考资料

使用 Azure 门户在虚拟机规模集 (VMSS) 上配置 Azure 资源的托管标识:https://docs.azure.cn/zh-cn/active-directory/managed-identities-azure-resources/qs-configure-portal-windows-vmss#user-assigned-managed-identity

 

使用 VM 标识获取访问令牌,并使用它调用资源管理器https://docs.microsoft.com/zh-cn/azure/active-directory/managed-identities-azure-resources/msi-tutorial-linux-vm-access-arm#get-an-access-token-using-the-vms-identity-and-use-it-to-call-resource-manager

 

[完]

相关文章
|
4月前
|
安全 Linux API
【Azure Key Vault】使用Azure CLI获取Key Vault 机密遇见问题后使用curl命令来获取机密内容
【Azure Key Vault】使用Azure CLI获取Key Vault 机密遇见问题后使用curl命令来获取机密内容
|
4月前
【Azure Developer】如何在Azure门户上把当前账号下的所有资源信息列举并导出呢?
Azure Resource Graph Explorer 是一个强大的工具,旨在提供跨订阅的资源查询和治理。它允许用户在任何 Azure 环境中查看资源及其属性的最新视图。 resources |project ['id'], name, ['type'], tenantId, sku, properties
|
4月前
|
API 网络架构
【Azure API 管理】如何修改Azure APIM的管理员邮箱和组织名称
【Azure API 管理】如何修改Azure APIM的管理员邮箱和组织名称
|
4月前
|
JavaScript 网络协议 API
【Azure API 管理】Azure APIM服务集成在内部虚拟网络后,在内部环境中打开APIM门户使用APIs中的TEST功能失败
【Azure API 管理】Azure APIM服务集成在内部虚拟网络后,在内部环境中打开APIM门户使用APIs中的TEST功能失败
|
4月前
|
数据库
【Azure 环境】在Azure中为数据启用强制保留期 mandatoryRetentionPeriodEnabled
【Azure 环境】在Azure中为数据启用强制保留期 mandatoryRetentionPeriodEnabled
|
4月前
|
存储 API C#
【Azure Developer】解决Azure Key Vault管理Storage的示例代码在中国区Azure遇见的各种认证/授权问题 - C# Example Code
【Azure Developer】解决Azure Key Vault管理Storage的示例代码在中国区Azure遇见的各种认证/授权问题 - C# Example Code
|
4月前
|
存储 安全 Python
【Azure Key Vault】在Azure Databricks上获取Azure Key Vault中所存储的机密(secret)的两种方式
【Azure Key Vault】在Azure Databricks上获取Azure Key Vault中所存储的机密(secret)的两种方式
|
4月前
|
API 网络架构
【Azure Developer】如何通过Azure REST API 获取到虚拟机(VM)所使用的公共IP地址信息
【Azure Developer】如何通过Azure REST API 获取到虚拟机(VM)所使用的公共IP地址信息
|
4月前
|
存储 API 数据安全/隐私保护
【Azure Developer】开发模式下使用AAD账号访问Azure Blob的相关参考
【Azure Developer】开发模式下使用AAD账号访问Azure Blob的相关参考
|
4月前
|
API
【Azure Developer】调用Microsoft Graph API获取Authorization Token,使用的认证主体为 Azure中的Managed Identity(托管标识)
【Azure Developer】调用Microsoft Graph API获取Authorization Token,使用的认证主体为 Azure中的Managed Identity(托管标识)