我们有一个 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 获得令牌时,我可以做我想做的事情,但我总是得到以下异常:
为此,我使用 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,则配置必须相同。