Масштабируемая / повторно используемая модель авторизации - PullRequest
2 голосов
/ 15 октября 2008

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

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

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

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

Ответы [ 2 ]

1 голос
/ 16 октября 2008

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

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

1 голос
/ 15 октября 2008

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

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

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

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

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

...