IDX10511:签名验证失败。尝试过的密钥:'Microsoft.IdentityModel.Tokens.X509SecurityKey

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

我们有一个 Angular 应用程序,它使用电容器-oauth2 库从我们的 Azure AD 和 Azure B2C AD 获取令牌。 当我从 B2C 获得令牌时,我可以使用 Program.cs 中的以下代码进行验证,并且可以调用我的控制器函数

builder.Services.AddAuthentication(options =>
    {
        options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    })
    .AddJwtBearer("B2C", options =>
    {
        options.Authority = $"https://eisvogel2.b2clogin.com/eisvogel2.onmicrosoft.com/B2C_1_susi/v2.0/";
        options.Audience = $"6fba7d06-5b7a-41bd-8371-6f1ad6f3176c";
    });

但是当我从来自 MS Graph 的内部 AD 获得令牌时,我可以做我想做的事情,但我总是得到以下异常:

enter image description here

为此,我使用 Studio 在创建带有身份验证的新解决方案时生成的代码 builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("AzureAd")); 并更改了配置 enter image description here

我已经尝试过各种帖子的结论,但没有任何帮助

我知道有很多类似的帖子,我已经找了三天了。如果有人能将我推向正确的方向,那就太好了。

备注:我忘了说我是在.NET 6上构建的解决方案。与前人有什么不同吗?

c# azure-active-directory azure-ad-graph-api verify
1个回答
6
投票

感谢@kavya Saraboju 再次向我指出这篇文章。经过更多的叮叮之后,我明白我必须在服务器和客户端上使用相同的范围。它必须是您可以在 Azure 中的“公开 API”下找到的范围名称,如下所示 =>

“范围”:“api://xxxa2967-1111-2222-3333-xxx9c0d72231/tasks.read”,

我玩了很多范围,比如 openid / 从 http:// 开始,只是名称没有任何作用。 因此,对于所有其他人:有数百个具有不同想法的示例 => 只需从 Azure 复制数据,如果您有多个应用程序必须处理 Azure AD,则配置必须相同。

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