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

Azure跨租户SCIM令牌验证异常:非目标租户可正常连接

Azure SCIM 令牌跨租户验证通过的问题排查与修复

问题核心

你遇到的问题是:为租户A生成的JWT令牌(Issuer为https://sts.windows.net/My_TenantId,Audience为租户A的应用ID),被租户B的SCIM应用用来测试连接时居然通过了验证,这不符合“令牌仅对目标租户内的应用生效”的设计预期。

可能的原因及修复步骤

  • 令牌验证逻辑未校验租户标识
    你的SCIM服务端可能只做了Audience(应用ID)和签名有效性校验,没验证Issuer对应的租户是否和服务绑定的目标租户一致。不同租户可能存在相同的应用ID(比如多租户应用注册),但Issuer里的租户ID是唯一的。
    检查.NET Core Web API的JWT验证代码,确保同时严格校验Issuer和Audience,并且Issuer必须是目标租户的STS地址:

    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            options.Authority = "https://sts.windows.net/你的目标租户ID/";
            options.Audience = "d0d2ce47-8775-4a20............d0d2ce47";
            // 强制验证Issuer,拒绝其他租户的令牌
            options.TokenValidationParameters.ValidateIssuer = true;
            options.TokenValidationParameters.ValidIssuer = "https://sts.windows.net/你的目标租户ID/";
            // 确保Audience严格匹配
            options.TokenValidationParameters.ValidateAudience = true;
            options.TokenValidationParameters.ValidAudience = "d0d2ce47-8775-4a20............d0d2ce47";
        });
    
  • 应用注册为多租户模式
    如果你的SCIM应用注册是多租户类型,Azure STS会允许其他租户的服务主体获取该应用ID的令牌。这种情况下,只要Audience匹配、签名有效,默认验证就会通过。
    解决办法二选一:

    1. 将应用注册改为单租户模式(仅允许目标租户访问);
    2. 在验证逻辑中额外校验令牌的tid声明(租户ID),确保它等于目标租户ID:
      options.Events = new JwtBearerEvents
      {
          OnTokenValidated = context =>
          {
              var tenantId = context.Principal.FindFirstValue("tid");
              if (tenantId != "你的目标租户ID")
              {
                  context.Fail("无效租户");
              }
              return Task.CompletedTask;
          }
      };
      
  • 验证中间件配置或缓存问题
    检查是否存在令牌缓存机制导致旧验证结果被复用,或者中间件配置未正确生效。确保每次请求都重新验证令牌的Issuer、Audience和租户ID。

验证修复效果

修改完成后,用其他租户的令牌测试连接,此时应返回401 Unauthorized错误;目标租户的令牌则正常通过验证,符合设计预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:14:57