Verificação de autorização para caches HTTP

Eu tenho o método de API da Web listado abaixo, para umaREST serviço. Isto é para obter todas as informações de usuários para InventoryAuditors. Somente usuários autorizados do InventoryAuditor podem acessar esse recurso.

[RoutePrefix("api/users")]
public class UsersController : ApiController
{
    [Authorize(Roles="InventoryAuditor")]
    [Route("")]
    [HttpGet]
    public List<User> GetAllUsers()
    {
        //Return list of users
    }

}

public class User
{
    public int UserID { get; set; }
    public string FirstName { get; set; }
}

Questões

Esse recurso pode ser armazenado em cache parashared caches (gostarForward Proxies e outros caches intermediários)?Se sim, como o cache compartilhado executa a verificação de autorização - como o cache sabe que o recurso deve ser servido apenas para InventoryAuditors?Como devem ser os cabeçalhos para tornar esta representação autorizada armazenável em cache?

Ou éHTTP Caching nem todos devem ser utilizados em caso de recursos autorizados?

Nota: O artigo"Tutorial de armazenamento em cache para autores e webmasters da Web" diz:

Por padrão, as páginas protegidas com autenticação HTTP são consideradas privadas; eles não serão mantidos por caches compartilhados. No entanto, você pode tornar públicas as páginas autenticadas com um cabeçalho Cache-Control: public; Os caches compatíveis com HTTP 1.1 permitirão que eles sejam armazenados em cache.

REFERÊNCIAS

https://tools.ietf.org/html/rfc7235#section-4.2https://tools.ietf.org/html/rfc7234#section-3.2https://tools.ietf.org/html/rfc7234#section-5.2.2Protocolo de transferência de hipertexto (HTTP / 1.1): Armazenamento em cacheCaracterística: Autenticação de Portador - LulaTruques estúpidos de cache da Web

questionAnswers(2)

yourAnswerToTheQuestion