Asp.net core 未找到默认身份验证/质询方案,但它们';启动时重新设置
在将.NET Framework web API移植到.NET Core 2.2的过程中,我在使用AD配置身份验证时遇到了一些问题。旧的应用程序会有如下内容:Asp.net core 未找到默认身份验证/质询方案,但它们';启动时重新设置,asp.net-core,azure-active-directory,Asp.net Core,Azure Active Directory,在将.NET Framework web API移植到.NET Core 2.2的过程中,我在使用AD配置身份验证时遇到了一些问题。旧的应用程序会有如下内容: app.UseWindowsAzureActiveDirectoryBearerAuthentication( new WindowsAzureActiveDirectoryBearerAuthenticationOptions { Tenant = "contoso.onmicrosoft.com",
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = "contoso.onmicrosoft.com",
TokenValidationParameters = new TokenValidationParameters { ValidAudience = "1111..."}
});
我们使用API的方式如下:web应用程序处理身份验证(获取JWT)并将所述令牌与我们的API一起用于某些操作。在网上搜索时,我找到了使用Microsoft.AspNetCore.Authentication.AzureAD.UI
的示例。我现在得出以下结论:
appsettings.json
:
{
...
"AzureAd": {
"Domain": "contoso.onmicrosoft.com",
"Instance": "https://login.microsoftonline.com",
"TenantId": "2222...",
"ClientId": "1111..."
}
}
Startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = AzureADDefaults.JwtBearerAuthenticationScheme;
options.DefaultChallengeScheme = AzureADDefaults.JwtBearerAuthenticationScheme;
});
}
public void Configure(IApplicationBuilder app)
{
app.UseAuthentication();
app.UseMvc();
}
问题是,当我使用生成的令牌(可与.NET Framework应用程序一起使用)时,我收到以下错误:
InvalidOperationException:未指定authenticationScheme,并且未找到DefaultChallengeScheme。
在我看来,您尚未添加Azure AD身份验证方案。这通常类似于services.AddAuthentication().AddAzureADBearer()