Modelo de respuesta personalizado 401 y 403 con middleware UseJwtBearerAuthentication

Quiero responder con un modelo de respuesta JSON cuando se produce un 401 y 403. Por ejemplo:

HTTP 401
{
  "message": "Authentication failed. The request must include a valid and non-expired bearer token in the Authorization header."
}

Estoy usando middleware (como se sugiere enesta respuesta) para interceptar 404s y funciona muy bien, pero no es el caso con 401 o 403s. Aquí está el middleware:

app.Use(async (context, next) =>
{
    await next();
    if (context.Response.StatusCode == 401)
    {
        context.Response.ContentType = "application/json";
        await context.Response.WriteAsync(JsonConvert.SerializeObject(UnauthorizedModel.Create(), SerializerSettings), Encoding.UTF8);
    }
});

Cuando se coloca ABAJOapp.UseJwtBearerAuthentication(..) enStartup.Configure(..), parece ignorarse por completo y se devuelve un 401 normal.

Cuando se coloca ARRIBAapp.UseJwtBearerAuthentication(..) enStartup.Configure(..), se genera la siguiente excepción:

ID de conexión "0HKT7SUBPLHEM": la aplicación generó una excepción no controlada. System.InvalidOperationException: los encabezados son de solo lectura, la respuesta ya ha comenzado. en Microsoft. Api.Startup. <b__12_0> d.MoveNext () en Startup.cs

Respuestas a la pregunta(2)

Su respuesta a la pregunta