Я установил openiddict в веб-api .net core 2.0, и у меня работают потоки кода и паролей. У меня есть тестовые примеры, чтобы гарантировать, что заблокированным действиям в API будет отказано, когда запрашивающая сторона не авторизована, которая ищет код состояния 401.
Когда эти тесты запускаются, ответ 404 not found вместо 401, что делает мой тест неуспешным. Я знаю, что маршрут правильный, потому что он возвращает 200, когда разрешает анонимность. Я получаю 404 всякий раз, когда пытаюсь получить доступ к любому действию, заблокированному без аутентификации. Является ли это статусом по умолчанию для openiddict, когда вы пытаетесь получить доступ к ресурсу без аутентификации? Это происходит независимо от того, запускается ли он из браузера, почтальона или из тестового примера. Как мне настроить его для возврата 401? Я представил свою конфигурацию ниже.
services.AddOpenIddict<int>(options =>
{
options.AddEntityFrameworkCoreStores<ApplicationContext>();
options.AddMvcBinders();
options.EnableAuthorizationEndpoint("/connect/authorize");
options.EnableTokenEndpoint("/connect/token");
options.AllowAuthorizationCodeFlow();
options.AllowPasswordFlow();
options.AllowRefreshTokenFlow();
options.RequireClientIdentification();
options.SetAccessTokenLifetime(TimeSpan.FromMinutes(1));
options.SetRefreshTokenLifetime(TimeSpan.FromMinutes(20160));
options.DisableHttpsRequirement();
});
services.AddAuthentication()
.AddFacebook(o => { o.ClientId = settings.FacebookAppID; o.ClientSecret = settings.FacebookAppSecret; })
.AddOAuthValidation();