.NET Core 8 Azure AD 验证生成签名无效

问题描述 投票:0回答:1

使用 .NET 7 时,下面的代码在不记名令牌验证期间运行良好。不幸的是,当我的 Web API 应用程序升级到版本 8 时,此代码无法正常运行并生成此错误消息:

Bearer error="invalid_token",error_description="The signature is invalid"

services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(options =>
{
    options.IncludeErrorDetails = true;
    options.TokenValidationParameters = new TokenValidationParameters
    {
        ValidIssuer = $"https://sts.windows.net/{configuration["AD:TenantId"]}/", 
        ValidateIssuer = true,

        ValidAudience = "00000003-0000-0000-c000-000000000000",
        ValidateAudience = true,

        SignatureValidator = delegate (string token, TokenValidationParameters parameters) { return new JwtSecurityToken(token); },
        ValidateIssuerSigningKey = true,

        RequireSignedTokens = false,
        ClockSkew = TimeSpan.Zero
    };
}, options => configuration.Bind("AD", options));

然后由reactjs应用程序生成并发送令牌。这既不能在本地运行,也不能发布到 Azure 应用服务。

c# azure-active-directory asp.net-core-webapi bearer-token
1个回答
0
投票

您需要将

ValidAudience
设置为 API 的客户端 ID 或应用程序 ID URI。 您设置的ID就是Graph API的ID。 Graph 使用不同的签名机制,因此您将无法验证它。

您的 API 永远不应该接受用于其他 API(例如 Graph API)的令牌。 您还需要更新前端以获取具有应用程序中定义的范围的正确令牌。

© www.soinside.com 2019 - 2024. All rights reserved.