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

从Asp.Net Core SignalR迁移至Azure SignalR后Graph调用授权异常求助

Azure SignalR迁移后OBO流调用Graph触发增量授权的排查方案

核心问题点

迁移到Azure SignalR后,OBO流的令牌传递环节因Azure SignalR的代理机制出现了令牌上下文丢失或权限范围缺失,导致Microsoft Graph判定需要用户进行增量授权。

需核对的关键配置项

  • Azure SignalR服务身份验证模式
    确保Azure门户中SignalR服务的「设置->身份验证」配置为使用应用服务身份验证,并关联正确的后端API AAD应用,保证客户端令牌能被正确传递和校验。

  • 显式配置令牌转发逻辑
    在Program.cs中添加Azure SignalR服务时,必须显式配置令牌提供者,确保客户端的AAD令牌完整传递到后端API:

    builder.Services.AddAzureSignalR(options =>
    {
        options.AccessTokenProvider = context =>
        {
            return Task.FromResult(context.Request.Headers["Authorization"].ToString().TrimStart("Bearer ".ToCharArray()));
        };
    });
    

    同时确认API的认证中间件配置正确,支持从Azure SignalR的代理请求中提取令牌并用于OBO流:

    builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddMicrosoftIdentityWebApi(builder.Configuration)
        .EnableTokenAcquisitionToCallDownstreamApi()
        .AddMicrosoftGraph(builder.Configuration.GetSection("Graph"))
        .AddInMemoryTokenCaches();
    
  • AAD应用权限与管理员同意
    检查后端API对应的AAD应用,确保已添加所有调用Graph所需的权限,且这些权限均完成管理员同意。若迁移后新增权限未授权,会直接触发增量授权提示。

  • Azure SignalR的CORS配置
    在Azure SignalR服务的CORS设置中,添加Teams应用的域名,并确保允许传递Authorization请求头,避免令牌在跨域请求中被过滤。

  • JWT令牌受众验证
    确认API的JWT验证配置中,受众(Audience)包含后端API的客户端ID,或设置为接受Azure SignalR服务的标识符,避免因受众不匹配导致令牌被截断或验证失败。

调试验证步骤

  • 在API中添加日志,打印接收到的令牌的scp(权限范围)和aud(受众)字段,对比本地SignalR与Azure SignalR环境下的差异,定位是否存在权限缺失或受众错误。
  • 使用相同权限的令牌在Microsoft Graph Explorer中测试调用,排除Graph自身的权限配置问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:20:23