У меня есть следующий сценарий:
- Несколько пользователей (<100) </li>
- Учетные записи пользователей в AD (в разных группах)
- Каждая группа в AD соответствуетво внутренний отдел;в каждом отделе есть по крайней мере один руководитель
- (можно сказать) У нас есть перекрестный контроль (существуют роли руководителя, применимые к группе групп, т. е. может быть один руководитель, который фактически контролирует три или для групп - каксуществует в AD)
- Несколько внутренних систем, половина из них на веб-основе, все они построены на основе .Net framework
В настоящее время у нас имеется большинство настольных систем, аутентифицирующих пользователей с помощьюразрешения для папок (развертываются в сетевой среде с использованием ClickOnce, каждая папка развертывания разрешена отдельными пользователями).Это не работает для всех настольных систем, хотя;у нас есть два из них, использующих свою собственную встроенную систему аутентификации, как показано ниже:
Система A состоит в основном из различных таблиц данных (просто показывает некоторые данные на экране).
Все таблицы данных на самом деле представляют собой разные группы одинаковых данных;эти данные относятся к конкретной учетной записи.
Каждая строка счета содержит столбцы {число, владелец, тип, данные1, данные2, данные3, данные4 ...};различные группировки основаны на номере / владельце / типе.
Все столбцы данных (n) являются числами (сумма для каждой группировки отображается после завершения группировки)
Для этой конкретной системы столбцы данных относятся к группам.Таким образом, пользователи в AD Group1 могут видеть данные столбцов (1-5), Group2 может просматривать данные столбцов (7-9) и так далее.Однако супервизор для каждой группы может видеть один дополнительный столбец для своей группы (супервизор Group1 может видеть данные (1-5) и data6 - давайте назовем его «специальным столбцом» для группы);Есть супервизоры, которые могут видеть столбцы других групп (включая «специальный столбец» или нет), есть общие супервизоры, которые могут видеть все столбцы, и есть также пользователи, которые могут видеть все несвойственные столбцы.Это беспорядок.
Для решения этой проблемы недостаточно ClickOnce;поэтому в основном команда разработчиков встраивала определенную сборку авторизации, которая запрашивает базу данных, используя текущую систему в качестве параметра (она поддерживает другие системы), и возвращает набор имен столбцов в качестве результатов;эти результаты затем используются в другом запросе, который извлекает только определенные пользовательские столбцы.
Эта устаревшая система собирается быть заменена более новой;после долгих размышлений (включая ремонтопригодность - архитектура системы - беспорядок), поскольку речь идет только о поиске и отображении данных с минимальной обработкой, мы решили использовать (некоторые из них) запросы и переписать логику поиска данных.
Кроме того, большинству существующих веб-систем разрешены жесткие коды (if (sADLogin == "userA") {..});некоторые из них используют только неинтуитивные URL-адреса, отправленные конкретным пользователям, и пальцы скрещены.Sad.
Мы хотели бы использовать более абстрактный подход для разрешения (чтобы мы могли заставить каждую систему использовать один и тот же поставщик аутентификации).Использование веб-сервисов / WCF только кажется уместным (также учитывая, что мне все еще нужно аутентифицировать настольные системы и некоторые электронные таблицы, возможно, с использованием имен);однако я не мог найти подходящий образец или архитектурную модель для этого.В документации Microsoft есть один шаблон интрасети WCF , который решает большинство из них, за исключением того, что я не могу использовать свои группы Windows в качестве ролей.В Интернете есть шаблон (http://msdn.microsoft.com/en-us/library/ff650091.aspx),, однако, который, кажется, решает проблему ролей (с этим я сейчас и сталкиваюсь), но, поскольку я впервые имею дело с безопасностью WCF, я хотел бы иметь некоторыемнения экспертов по этому вопросу.
Есть идеи?
Спасибо,