У меня есть ответ, так что вы можете принять его :)

дал API в asp.net core 2.0, где я использую смешанный режим аутентификации. Для некоторых контроллеров JWT и для некоторых используется проверка подлинности Windows.

У меня нет проблем с контроллерами, которые авторизуются с помощью JWT. Но для контроллеров, где я хочу использовать Windows-аутентификацию, мне бесконечно предлагается диалоговое окно с именем пользователя и паролем Chrome.

Вот мой пример кода контроллера, где я хочу использовать аутентификацию Windows вместо JWT.

[Route("api/[controller]")]
[Authorize(AuthenticationSchemes = "Windows")]
public class TestController : Controller
{
    [HttpPost("processUpload")]
    public async Task<IActionResult> ProcessUploadAsync(UploadFileModel uploadFileModel)
    {

    }
}

Мой код настройки служб

public void ConfigureServices(IServiceCollection services)
{
     services.AddAuthentication(options =>
     {
        options.DefaultAuthenticateScheme = IISDefaults.AuthenticationScheme;
        options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
     })
     .AddJwtBearer("Bearer", options =>
     {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateAudience = false,       
            ValidateIssuer = false,  
            ValidateIssuerSigningKey = true,
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("blahblahKey")),
            ValidateLifetime = true, //validate the expiration and not before values in the token
            ClockSkew = TimeSpan.FromMinutes(5) //5 minute tolerance for the expiration date
        };
     });

     // let only my api users to be able to call 
     services.AddAuthorization(auth =>
     {
        auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
            .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme‌​)
            .RequireClaim(ClaimTypes.Name, "MyApiUser").Build());
     });

     services.AddMvc();
}

Мой метод настройки.

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseCors("CorsPolicy");

    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseAuthentication(); //needs to be up in the pipeline, before MVC
    app.UseMvc();
}

Ценю ваши предложения и помощь в этом.

Обновление: до сих пор я отлаживал свой код на Chrome. Но когда я использовал IE 11, приведенный выше код работает без каких-либо проблем.

Может ли это быть проблемой CORS для Chrome, где проблема предпечатной проверки?

Спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос