Ответ 1
После открытия проблема здесь, похоже, что это действительно должно работать... вроде.
В вашем Startup.Configure
, если вы просто вызываете app.UseMvc()
и не регистрируете какое-либо другое промежуточное программное обеспечение, вы получите 401
для любых связанных с auth ошибок (не аутентифицированных, аутентифицированных, но без разрешения).
Если, однако, вы зарегистрируете одно из поддерживающих его посредников по проверке подлинности, вы получите 401
для неаутентифицированных и 403
без каких-либо разрешений. Для меня я использовал JwtBearerMiddleware
, который позволяет выполнять аутентификацию через JNON Web Token. Ключевой частью является установка опции AutomaticChallenge
при создании промежуточного программного обеспечения:
в Startup.Configure
:
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
AutomaticAuthenticate = true,
AutomaticChallenge = true
});
app.UseMvc();
AutomaticAuthenticate
автоматически установит ClaimsPrincipal
, чтобы вы могли получить доступ к User
в контроллере. AutomaticChallenge
позволяет промежуточному программному средству Auth изменять ответ при возникновении ошибок auth (в этом случае настройка 401
или 403
соответственно).
Если у вас есть ваша собственная схема аутентификации для реализации, вы бы наследовали от AuthenticationMiddleware
и AuthenticationHandler
, подобно тому, как работает реализация JWT.