我有一个 .NET Core 2.2 / Angular 10 应用程序,我想在其中实现 Azure AD 登录。该应用程序已经使用 JWT 进行了简单的用户/密码登录:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer("Default",options=>
....
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration["SecurityKeyIssuer"],
ValidAudience = Configuration["SecurityKeyAudience"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["SecurityKey"]))
};
现在我尝试添加这个:
.AddJwtBearer("AzureAD",opt =>
{
opt.IncludeErrorDetails = true;
opt.Authority = Configuration["ActiveDirectory:Authority"];
opt.Audience = Configuration["ActiveDirectory:Audience"];
...
services
.AddAuthorization(options =>
{
options.DefaultPolicy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.AddAuthenticationSchemes("Default", "AzureAD")
.Build();
});
我尝试了几种变体,例如以不同格式对权限等进行硬编码。我进入登录页面,可以使用默认用户/密码身份验证登录,但之后每个页面都只显示这个 500 错误:
即使在我注释掉所有新配置之后。当我删除 AzureAD 身份验证方案时,它再次正常工作。有什么建议么?
当然,我注册了应用程序并使用了 Azure AD 页面中的信息。
此外,在尝试此操作时:
services.AddAuthentication("MyAuthenticationScheme")
.AddMicrosoftIdentityWebApp();
它说:
严重性代码描述项目文件行抑制状态错误 CS1061“AuthenticationBuilder”不包含“AddMicrosoftIdentityWebApp”的定义,并且找不到接受“AuthenticationBuilder”类型的第一个参数的可访问扩展方法“AddMicrosoftIdentityWebApp”(您是否缺少 using 指令或程序集参考?) JI.Infopool.WebApp C:\Projekte\JI.Infopool - master\JI.Infopool.WebApp\Startup.cs 56 活动
虽然我已经包含了 NuGet 包 Microsoft.Identity.Web