【Azure Developer】使用 Azure VM 上的用户分配托管标识访问 Azure Key Vault 中国区代码示例
2021-06-24 21:03
696 查看
问题描述
在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, "acce 56c ss_token"); }
需要注意修改的地方为:
1) Resource需要修改为中国区endpoint: https%3A%2F%2Fvault.azure.cn
2) R
esource参数值必须与 Azure AD 预期值完全一致。 如果使用资源管理器资源 ID,必须在 URI 的结尾添加斜线。
3)
<CLIENT ID>必须替换为VM中唯一的一个用户标记,当VM有多个用户标记的时候,会遇见400/403错误。
参考资料
使用 Azure 门户在虚拟机规模集 (VMSS) 上配置 Azure 资源的托管标识:https://docs.azure.cn/zh-cn/active-directory/managed ad8 -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
[完]
相关文章推荐
- [Azure] Azure 中国服务使用注意事项及兼容版存储访问工具
- Yii2使用驼峰命名的形式访问控制器的示例代码
- System.UnauthorizedAccessException: 拒绝访问 temp 目录。用来运行 XmlSerializer 的标识“NT AUTHORITY\NETWORK SERVICE”没有访问 temp 目录的足够权限。CodeDom 将使用进程正在使用的用户帐户进行编译,这样,如
- Kafka使用Java客户端进行访问的示例代码
- 使用 Libki 来管理公共用户访问计算机 | Linux 中国
- 演示事件(Event)怎样使用以及怎样为用户控件添加一个事件(示例代码下载)
- QuickCSharp框架开发(20)------授权部分的代码以及如何使用授权 添加用户、角色与分配资源部分的代码暂且省略
- 使用 ACL 设置用户访问指定文件/目录的权限 | Linux 中国
- 在asp.net里使用指定的用户运行访问Sharepoint网站的代码
- 【Azure 应用服务】Azure App Service (Windows) 使用Flask框架部署Python应用,如何在代码中访问静态文件呢?如何设置文件路径?是相对路径还是绝对路径呢?
- 演示事件(Event)怎样使用以及怎样为用户控件添加一个事件(示例代码下载)
- Azure Key Vault (3) 在Azure Windows VM里使用Key Vaule
- VC++2010下使用MFC+托管代码访问Revit
- System.UnauthorizedAccessException: 拒绝访问 temp 目录。用来运行 XmlSerializer 的标识“NT AUTHORITY\NETWORK SERVICE”没有访问 temp 目录的足够权限。CodeDom 将使用进程正在使用的用户帐户进行编译,这样,如
- 演示事件(Event)怎样使用以及怎样为用户控件添加一个事件(示例代码下载)
- 演示事件(Event)怎样使用以及怎样为用户控件添加一个事件(示例代码下载)
- SAP ABAP/4学习---如何给写好的一个程序分配事务代码,用户可以直接通过事务码来访问程序.或者加入收藏夹(9)
- System.UnauthorizedAccessException: 拒绝访问 temp 目录。用来运行 XmlSerializer 的标识“NT AUTHORITY\NETWORK SERVICE”没有访问 temp 目录的足够权限。CodeDom 将使用进程正在使用的用户帐户进行编译,这样,如
- JavaScript编写检测用户所使用的浏览器的代码示例
- JavaScript编写检测用户所使用的浏览器的代码示例