using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using System; using System.Collections.Generic; using System.Net; using System.Text; using System.Text.Encodings.Web; using System.Threading.Tasks; namespace Saxonite.Net.Core.Web.Base.Middleware { //======================================================================= // Authentication handler required to allow actions to issue Forbid() responses. // Ref. https://stackoverflow.com/questions/54578426/why-do-i-need-to-set-a-defaultforbidscheme/54587054#54587054 //======================================================================= public class SaxAuthenticationHandler : AuthenticationHandler { //------------------------------------------------------------------- // Data members. //------------------------------------------------------------------- public SaxAuthenticationHandler(IOptionsMonitor options, ILoggerFactory logger, UrlEncoder encoder, ISystemClock clock) : base(options, logger, encoder, clock) { } //------------------------------------------------------------------- protected override Task HandleForbiddenAsync(AuthenticationProperties properties) { Context.Response.StatusCode = (int)HttpStatusCode.Forbidden; return base.HandleForbiddenAsync(properties); } //------------------------------------------------------------------- protected override async Task HandleAuthenticateAsync() { Context.Response.StatusCode = (int)HttpStatusCode.Unauthorized; return AuthenticateResult.NoResult(); } //------------------------------------------------------------------- } //======================================================================= }