Как я могу убедиться, что проверки IsInRole не используют кэшированные учетные данные
У меня есть клиент WPF, который подключается к службе WCF, и я хочу заблокировать некоторые функции, чтобы только определенные пользователи могли выполнять определенные действия. Служба WCF олицетворяет пользователя клиента при выполнении методов службы. ОС Windows XP.
Я читал этот вопрос в рамках своего исследования о том, как наилучшим образом применить роли пользователей к функциям в моем приложении (я хочу назначить пользователей в группы безопасности AD, а затем проверить IsInRole), и беспокоюсь, что кэшированные разрешения позволят пользователям, которые их разрешения были уменьшены для доступа к функциям, к которым у них больше нет разрешения. С другой стороны, я также обеспокоен тем, что пользователям, у которых были обновлены их разрешения, потребуется выйти из своей учетной записи Windows или даже, возможно, придется перезапустить службу WCF (в худшем случае), прежде чем они смогут получить доступ к новым функциям.
Какой самый простой способ гарантировать, что и клиент, и сервер могут сразу увидеть изменения в группах безопасности AD?
1 ответ
Вы всегда можете реализовать свой собственный поставщик членства, который запрашивает AD. Это довольно просто, и вы будете уверены, что все оценки разрешений являются точными или, по крайней мере, такими, какими вы хотите.
Если вы обнаружите, что запросы к серверу AD при каждой оценке являются "дорогостоящими" по производительности, вы можете создать на клиенте свой собственный кэш, который можно периодически обновлять или по требованию. Этот кеш может быть таким же простым, как индексированный список (например, словарь) разрешений, которые вы можете запросить довольно быстро.
Вот хорошая статья о том, как взаимодействовать с AD: http://www.codeproject.com/KB/system/everythingInAD.aspx