Уровень абстракции списка контроля доступа (ACL) в .net - PullRequest
6 голосов
/ 28 июля 2011

Есть ли уровень абстракции ACL в .net? Я видел некоторые документы с «лучшими практиками», но без хорошей базовой реализации. А как насчет System.Security.AccessControl? Это хорошая отправная точка?

ACL должны работать с Ролями, хранящимися в БД, а также с Ролями системой и для определений объектов в памяти, а также объектов или файлов БД. Поэтому он должен быть общим и / или легко расширяемым.

Должно ли это полагаться на IPrincipal, IIdentity из .net framework?

В Zend есть что-то похожее в их Framework для PHP, и я ищу такие вещи для C # вместо того, чтобы портировать это (если уже есть стандартное решение или реализация с наилучшей практикой).

@ Ладислав:

Он не предназначен для использования только в веб-сервисах, толстых клиентах или автономных приложениях. Из-за этого я ищу уровень абстракции, который может быть расширен адаптерами для специфического бэкэнда / платформы. Вы правы, что я ищу что-то вроде уровня абстракции управления доступом на основе ролей для разных типов объектов и правильных определений. Это не должно зависеть от ACL, установленных для папок в файловых системах. Файловая система должна быть специальным адаптером, используемым реализацией ACL. Для меня ACL сам по себе является концепцией и не имеет ничего общего с файловыми системами. Файловые системы ИСПОЛЬЗУЕТ реализацию концепции ACL (даже если она в основном известна в этой области). Жесткая зависимость от Win32-api не нужна. Вот почему я прошу что-то общее и абстрактное (интерфейс), который обычно (и широко) используется. Знаете ли вы реализацию в Zend Framework (я знаю, что это PHP, но концепция работает для любого приложения, не только веб-)? Он абстрагирован и может использоваться для любого объекта в коде

1 Ответ

4 голосов
/ 27 июля 2012

Примером абстракции является библиотека nAcl - .NET Access Control List

... "помогает легко обрабатывать сценарии для матрицы прав. Это также может бытьлегко расширяется через провайдера "...

Особенности:

  • Обрабатывает права приложения для вас
  • Обрабатывает иерархию прав
  • Права рассчитываются в одном месте, но потенциально могут быть получены из любого места благодаря механизму провайдера (похоже, является важной функцией для добавления нескольких источников)
  • В провайдере памяти для статических прав
  • Провайдер маршрутизатора для обработки маршрутов и связывание провайдеров с маршрутом
  • Провайдер Sql для обработки прав в Db

...но я не видел использования IPrincipal в интерфейсе.

...