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

基于Azure B2C的公开移动App直连Application Insights安全方案咨询

解决方案:移动应用通过B2C登录后安全提交Application Insights遥测

关于Monitoring Metrics Publisher角色分配的问题

Monitoring Metrics Publisher角色完全可以直接分配给Azure B2C的应用注册,不需要给每个用户单独配置权限:

  • 登录Azure Portal,找到你的Application Insights资源(或其所属资源组)
  • 进入「访问控制(IAM)」→「添加」→「添加角色分配」
  • 角色选择「Monitoring Metrics Publisher」,然后在「成员」页签选择「用户、组或服务主体」,搜索并选中你的B2C应用注册完成分配
  • 这样所有通过该应用注册登录的用户,都能借助应用的权限获取提交遥测的令牌,无需逐个用户授权

生产环境的实现方式

不能仅依赖DefaultAzureCredential(它主要用于本地调试场景),生产环境要基于B2C登录后的身份获取专属遥测令牌,步骤如下:

  1. 配置应用注册权限:在你的B2C应用注册中,添加API权限,选择「Azure Monitor」相关权限(或直接指定范围https://monitor.azure.com/.default),添加「user_impersonation」权限并授予管理员同意
  2. 获取遥测访问令牌:用户通过B2C OAuth2.0+PKCE流程登录拿到ID令牌后,再发起一次令牌请求,将目标受众(audience)设为https://monitor.azure.com/,获取专门用于提交遥测的access token
  3. 在遥测请求中附加令牌:使用Application Insights SDK时,自定义遥测初始化器或修改请求头,将令牌以Bearer <token>的格式加入每个遥测请求的Authorization头部
    示例(.NET环境):
    var telemetryConfig = TelemetryConfiguration.CreateDefault();
    telemetryConfig.TelemetryInitializers.Add(new TokenTelemetryInitializer(accessToken));
    var telemetryClient = new TelemetryClient(telemetryConfig);
    
    // 自定义初始化器实现
    public class TokenTelemetryInitializer : ITelemetryInitializer
    {
        private readonly string _token;
        public TokenTelemetryInitializer(string token) => _token = token;
        public void Initialize(ITelemetry telemetry)
        {
            if (telemetry is RequestTelemetry requestTelemetry)
            {
                requestTelemetry.Context.Properties["Authorization"] = $"Bearer {_token}";
            }
        }
    }
    
  4. 令牌生命周期管理:access token有效期通常为1小时,要实现自动刷新逻辑,避免令牌过期导致遥测提交失败

额外安全提示

  • 移动应用严格遵循PKCE流程,防止授权码被盗用
  • 客户端不存储任何长期密钥,所有令牌都通过B2C授权流程动态获取
  • 限制应用注册的权限范围,仅保留提交遥测所需的最小权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:52:35