Проверка авторизации для HTTP-кэшей
У меня есть метод веб-API, как указано ниже, дляREST
оказание услуг. Это для получения всей информации о пользователях для InventoryAuditors. Только авторизованные пользователи InventoryAuditor могут получить доступ к этому ресурсу.
[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; }
}
Вопросы
Кэшируется ли этот ресурс дляshared caches
(лайкForward Proxies
и другие промежуточные кеши)?Если да, то как общий кэш выполняет проверку авторизации - как кэш узнает, что ресурс должен обслуживаться только для InventoryAuditors?Как должны выглядеть заголовки, чтобы разрешить кэширование этого авторизованного представления?Или естьHTTP Caching
Не все ли будут использоваться в случае авторизованных ресурсов?
Заметка: Статья«Учебник по кэшированию для веб-авторов и веб-мастеров» говорит:
По умолчанию страницы, защищенные HTTP-аутентификацией, считаются закрытыми; они не будут храниться в общих кэшах. Однако вы можете сделать аутентифицированные страницы общедоступными с помощью Cache-Control: public header; Кэши, совместимые с HTTP 1.1, позволят их кэшировать.
РЕКОМЕНДАЦИИ
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.2Протокол передачи гипертекста (HTTP / 1.1): кэшированиеОсобенность: Аутентификация на предъявителя - SquidГлупые хитрости веб-кэширования