Должен ли я удалить запись в кеше, которую я там не поместил? - PullRequest
1 голос
/ 12 сентября 2010

Предварительное условие : есть веб-приложение, использующее модель безопасности ASP.NET. Также есть компонент интеграции Active Directory (AD). Он предоставляет пользователям и ролям AD, как если бы это были собственные пользователи и роли приложения. Отношения типа «находится в роли» между пользователем AD и ролью AD, конечно, хранятся в домене AD, но кэшируются веб-приложением.

Проблема : Допустим, AD user1 является членом AD role1. Когда веб-приложение запускается, оно кеширует это отношение. Теперь, если администратор AD удаляет user1 из role1 с помощью консоли AD, приложение не знает об этом изменении - запись в кэше сохраняется. Это становится дырой в безопасности, потому что у role1 могут быть разрешения, которые у user1 больше не должны быть.

Есть два противоположных мнения, как решить эту проблему:

  1. «Прослушивать» изменения AD и запускать удаление записей кэша после обнаружения операции на сервере AD - поскольку мы несем ответственность за правильное функционирование компонента AD
  2. Оставьте кэш нетронутым - потому что мы не поместили туда запись и тоже не должны ее удалять

Как правильно поступить в этом случае? И почему?

Спасибо!

1 Ответ

1 голос
/ 12 сентября 2010

Я думаю, что это должно быть ответственностью разработчика компонента, который использует механизм кэширования.

Во многих случаях некоторая задержка при распространении измененных разрешений может быть приемлемой. Поэтому запись в кеше, которая использует достаточно малое абсолютное время ожидания, может быть приемлемой.

Если такая задержка неприемлема, то кэширование, вероятно, в любом случае не подходит.

Разработчик механизма кэширования должен это документировать. Если бы я делал это, у меня был бы задокументированный настраиваемый абсолютный тайм-аут, чтобы администраторы могли судить, какая задержка является приемлемой, и могли вообще отключить кэш. Я мог бы также предоставить API или пользовательский интерфейс, который позволяет администратору вручную очищать кеш.

...