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

.NET 6.0中Azure AD授权算法为None的高危漏洞排查求助

解决.NET 6 Azure AD授权中算法不可为Null的高危漏洞

漏洞本质

该高危漏洞指攻击者可能篡改JWT令牌的签名算法为none,绕过签名验证。针对Azure AD场景,我们可通过强化Microsoft Identity Web的配置彻底防护,无需手动生成密钥/证书。

解决方案代码

修改认证配置,显式强制签名验证、指定允许的算法,并禁用无签名令牌:

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApi(configuration, options =>
    {
        // 强制验证签名密钥
        options.TokenValidationParameters.ValidateIssuerSigningKey = true;
        // 指定Azure AD使用的签名算法(默认RS256)
        options.TokenValidationParameters.ValidAlgorithms = new[] { SecurityAlgorithms.RsaSha256 };
        // 禁止无签名的令牌(直接阻断none算法攻击)
        options.TokenValidationParameters.RequireSignedTokens = true;

        // 可选:显式验证发行方和受众,进一步强化安全
        options.TokenValidationParameters.ValidateIssuer = true;
        options.TokenValidationParameters.ValidateAudience = true;
        options.TokenValidationParameters.ValidIssuer = configuration["AzureAd:Issuer"];
        options.TokenValidationParameters.ValidAudience = configuration["AzureAd:Audience"];
    });

app.UseAuthentication();
app.UseAuthorization();

关键说明

  • 无需手动配置密钥/证书:Microsoft Identity Web会自动从Azure AD的OpenID Connect元数据端点获取公钥,用于验证JWT签名,无需手动生成或配置密钥。
  • 强化默认防护:虽然AddMicrosoftIdentityWebApi默认已拒绝none算法令牌,但显式配置这些参数可确保防护生效,避免因配置遗漏引发风险。

验证修复

使用JWT生成工具创建算法为none的令牌,请求API接口,正常情况下会返回401 Unauthorized,说明漏洞已修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:30:58