使用Azure Function获取Azure Maps访问令牌及.NET客户端创建方法
使用.NET创建Azure Maps管理客户端并在Azure Function中获取令牌
1. 安装必要的NuGet包
首先安装Azure Maps管理库与Azure身份验证相关包:
dotnet add package Azure.ResourceManager.Maps dotnet add package Azure.Identity
2. 配置Azure Function的身份权限
- 为Azure Function启用系统分配托管身份:在Azure门户进入Function应用→身份→系统分配→开启状态并保存。
- 为托管身份分配Azure Maps角色:在目标Azure Maps账户的「访问控制(IAM)」中添加角色分配,选择「Azure Maps Data Reader」或「Azure Maps Contributor」(按需选择),将该托管身份作为成员添加。
3. 创建.NET Azure Maps管理客户端
基于托管身份初始化客户端(推荐)
在Azure Function代码中,借助DefaultAzureCredential自动获取托管身份凭据,初始化管理客户端并获取访问令牌:
using Azure.Identity; using Azure.ResourceManager.Maps; using Microsoft.AspNetCore.Mvc; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; public class MapsTokenFunction { [FunctionName("GetMapsToken")] public async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req, ILogger log) { var subscriptionId = "<你的Azure订阅ID>"; var resourceGroupName = "<Maps账户所属资源组名>"; var mapsAccountName = "<你的Azure Maps账户名>"; // 初始化Maps管理客户端 var credential = new DefaultAzureCredential(); var mapsClient = new MapsManagementClient(credential, subscriptionId); // 示例:获取Maps账户基础信息 var mapsAccount = await mapsClient.Accounts.GetAsync(resourceGroupName, mapsAccountName); log.LogInformation($"当前Maps账户: {mapsAccount.Value.Name}"); // 获取供SPA使用的Azure Maps访问令牌 var tokenScope = "https://atlas.microsoft.com/.default"; var tokenRequest = new TokenRequestContext(new[] { tokenScope }); var tokenResult = await credential.GetTokenAsync(tokenRequest, CancellationToken.None); return new OkObjectResult(new { AccessToken = tokenResult.Token, ExpiresOn = tokenResult.ExpiresOn }); } }
基于服务主体初始化客户端(可选)
若需使用服务主体而非托管身份,可手动配置凭据:
var tenantId = "<Azure AD租户ID>"; var clientId = "<服务主体客户端ID>"; var clientSecret = "<服务主体密钥>"; var credential = new ClientSecretCredential(tenantId, clientId, clientSecret); var mapsClient = new MapsManagementClient(credential, subscriptionId);
4. 关键注意事项
- 令牌范围:
https://atlas.microsoft.com/.default是Azure Maps的默认权限范围,获取的令牌可用于地图渲染、地理搜索等核心服务访问。 - 权限匹配:托管身份/服务主体的角色需与业务需求匹配,仅需令牌访问则分配「Maps Data Reader」,需管理Maps资源则分配「Maps Account Contributor」。
- 令牌缓存:建议在Function中对令牌进行缓存,减少重复请求次数,提升响应性能。
内容的提问来源于stack exchange,提问作者harinsamaranayake
相关产品推荐
相关产品推荐

