我们有一个 Angular 应用程序,它使用电容器-oauth2 库从我们的 Azure AD 和 Azure B2C AD 获取 token 。 Wenn 我有来自 B2C 的 token ,我可以使用我的 Program.cs 中的以下代码来验证它,并且我可以调用我的 Controller Funktion
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";
});
但是我从我们的内部 AD 获得了一个 token ,该 token 来自 MS Graph 我可以做我想做的事情我总是得到以下异常:
为此,我使用 Studio 在创建带有身份验证的新解决方案时生成的代码 builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("AzureAd")); 并更改了配置
我已经尝试过各种帖子的结论,但没有真正的帮助
我知道有很多类似的帖子,我现在搜索了三天。如果有人能将我推向正确的方向,那就太好了。
备注:我忘了说我是在 .NET 6 上构建该解决方案的。与之前的版本有什么不同吗?
最佳答案
感谢@kavya Saraboju 再次向我指出这篇文章。经过更多的叮叮之后,我明白我必须在服务器和客户端上使用相同的范围。它必须是您可以在 Azure 中的“公开 API”下找到的范围名称,如下所示 =>
“范围”:“api://xxxa2967-1111-2222-3333-xxx9c0d72231/tasks.read”,
我玩过很多范围,比如 openid/从 http://开始,只是名称没有任何作用。 因此,对于所有其他人:有数百个具有不同想法的示例 => 只需从 Azure 复制数据,如果您有多个应用程序必须处理 Azure AD,则配置必须相同。
关于c# - IDX10511 : Signature validation failed. key 已尝试 : 'Microsoft. IdentityModel.Tokens.X509SecurityKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74196824/