You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure App Service:以用户身份向Log Analytics认证

获取Azure App Service登录用户的Bearer令牌用于Log Analytics认证

核心思路

借助App Service的Easy Auth内置能力,获取登录用户针对Log Analytics资源的委托访问令牌,替代托管身份令牌,实现以用户身份执行查询操作。

具体步骤

1. 确认Easy Auth基础配置

确保App Service已启用Entra ID作为身份提供者,用户登录流程正常。此时Easy Auth会自动在请求头中注入用户相关令牌字段,比如X-MS-TOKEN-AAD-ID-TOKEN(ID令牌)和X-MS-TOKEN-AAD-ACCESS-TOKEN(默认访问令牌)。

2. 获取针对Log Analytics的委托令牌

默认的X-MS-TOKEN-AAD-ACCESS-TOKEN通常不包含Log Analytics的访问权限,需通过App Service内置端点获取目标资源的专用令牌:

  • 调用/.auth/me端点获取用户身份元数据,从中提取refresh_token(需确保Easy Auth配置中已开启刷新令牌颁发)。
  • 调用/.auth/refresh端点,传入resource=https://api.loganalytics.io参数,换取针对Log Analytics的访问令牌。

示例代码(ASP.NET Core环境):

var authResult = await HttpContext.AuthenticateAsync("AzureAD");
if (!authResult.Succeeded)
{
    // 处理认证失败逻辑
    return;
}

// 从认证上下文获取刷新令牌
var refreshToken = authResult.Properties.GetTokenValue("refresh_token");

// 构造请求获取Log Analytics专用令牌
using var httpClient = new HttpClient();
var tokenRequest = new HttpRequestMessage(HttpMethod.Post, $"{Request.Scheme}://{Request.Host}/.auth/refresh");
tokenRequest.Content = new FormUrlEncodedContent(new Dictionary<string, string>
{
    ["resource"] = "https://api.loganalytics.io",
    ["refresh_token"] = refreshToken
});

var tokenResponse = await httpClient.SendAsync(tokenRequest);
tokenResponse.EnsureSuccessStatusCode();
var tokenData = await tokenResponse.Content.ReadFromJsonAsync<Dictionary<string, string>>();
var logAnalyticsBearerToken = tokenData["access_token"];

3. 验证权限配置

  • 确认Entra ID中应用已添加Log Analytics的委托权限(如Data.Read),并完成管理员同意(若需要)。
  • 确保登录用户拥有目标Log Analytics工作区的查询权限(如Log Analytics Reader角色)。

4. 调用Log Analytics API

将获取到的令牌放入请求头的Authorization字段,发起查询请求:

POST https://api.loganalytics.io/v1/workspaces/{你的工作区ID}/query
Authorization: Bearer {logAnalyticsBearerToken}
Content-Type: application/json

{
    "query": "AzureActivity | take 10"
}

内容的提问来源于stack exchange,提问作者Matthew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 08:07:11