Масштабируемая/многоразовая модель авторизации

StackOverflow https://stackoverflow.com/questions/203468

Вопрос

Итак, я ищу небольшое руководство по архитектуре, моя команда получает возможность пересмотреть некоторые решения с помощью новой функции, которую мы создаем, и я хотел узнать, что думает SO :-) Есть Конечно, некоторые вещи мы не меняем, поэтому решение должно соответствовать этой модели.А именно, у нас есть приложение ASP.NET, которое использует веб-службы, позволяющие пользователям выполнять действия в системе.

Проблема возникает потому, что, как и во многих системах, разным пользователям нужен доступ к разным функциям.Некоторые роли имеют доступ к кнопке Y, другие имеют доступ к кнопкам Y и B, а третьи по-прежнему имеют доступ только к кнопкам B.Большую часть времени, когда я вижу это, разработчики просто используют мешанину операторов if для работы с состоянием пользовательского интерфейса.Я опасаюсь, что если оставить это без контроля, это станет неуправляемым беспорядком, потому что помимо размещения логики авторизации в графическом интерфейсе ее необходимо поместить в веб-службы (которые вызываются через ajax), чтобы гарантировать, что только авторизованные пользователи вызывают определенные методы. .

поэтому мой вопрос к вам: как можно спроектировать систему так, чтобы уменьшить количество случайных специальных операторов if здесь и там, которые проверяют определенные роли, которые можно повторно использовать как в коде графического интерфейса/веб-формы, так и в коде веб-сервиса.

Для ясности: это веб-приложение ASP.NET, использующее веб-формы. Скрипт# для функциональности AJAX.Не позволяйте сценарию# отвлечь вас от ответа, он принципиально не отличается от asp.net ajax :-)

Это было полезно?

Решение

При переходе от традиционных разрешений на уровне группы, роли или операции происходит переход к авторизации на основе утверждений, подобно тому, что было реализовано в WCF.

Церматт — это кодовое имя библиотеки классов Microsoft, которая поможет разработчикам создавать приложения на основе утверждений на сервере и клиенте.Active Directory станет одной из STS, на которых приложение сможет авторизоваться одновременно с вашим собственным сервером, а также с другими стандартными серверами...

Другие советы

В «Код завершен» (стр.411) Стив МакКоннелл дает следующий совет (который Билл Гейтс читает как сказку на ночь в рекламе Microsoft).

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

«Вы можете использовать таблицу для описания логики, которая слишком динамична для представления в коде».

«Подход на основе таблиц более экономичен, чем предыдущий подход [механическое объектно-ориентированное проектирование]»

Используя подход на основе таблиц, вы можете легко добавлять новых «пользователей» (как в идее моделирования пользователя/агента вместе с его действиями).Это хороший способ избежать множества «если».И я использовал его раньше в таких ситуациях, как ваша, и он сохранял код красивым и аккуратным.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top