2

Мне нужно укрепить свой бизнес-уровень - доступ к конкретным данным. Пользовательский интерфейс может совершать вызовы бизнес-уровня и получать данные о пользователе. Пользовательский интерфейс затем может вызывать .Save() для пользователя, а бизнес-уровень будет вызывать уровень доступа к данным для сохранения пользователя.Аутентификация и авторизация в n-уровневой архитектуре

Несмотря на то, что проблема заключается в том, что я не хочу, чтобы какой-либо пользователь мог получать данные пользователя и вызывать пользователей, прошедших проверку подлинности только с этой ролью «admin». Как я могу узнать об этой аутентификации/авторизации в моем бизнес-слое/пользовательском интерфейсе, чтобы я мог это сделать?

Я использую ASP.NET для своего пользовательского интерфейса, и я ознакомился с поставщиками членства/роли, но это похоже на фактический пользовательский интерфейс. Мне нужно обеспечить его на уровне своего бизнеса, потому что в будущем может быть несколько разных пользовательских интерфейсов. например форм окон и Asp.net.

Мысли и предложения приветствуются.

Спасибо.

+0

Как вы общаетесь между уровнями? WCF, .net remoting, веб-сервисы? –

+0

Ссылки на библиотеки классов, но в будущем это может измениться – Mike

ответ

0

Поставщики ролей/членства ASP.NET включают компоненты уровня хранения и уровня кода, которые вы можете использовать повторно - это не только пользовательский интерфейс.

Для тонкого контроля доступа (например, для конкретных функций на странице) вы можете использовать библиотеки предприятий. Вы сможете повторно использовать код для защиты функциональности как на уровне BL, так и в слое пользовательского интерфейса.

Ссылку вы больше всего хотите это один: Determining Whether a User Is Authorized to Perform a Task

Также смотрите:

Во время предыдущих выпусках EntLibs, то авторизация Менеджер был ключевым компонентом, но в более поздних версиях это не твердое требование, вместо этого вы можете использовать AuthorizationRuleProvider. описание товара: Developing Applications Using Windows Authorization Manager.

Фильтрация данных является более проблематичной в зависимости от сложности ваших данных, ее объема и производительности.

  • Одна стратегия состоит в том, чтобы иметь простой DAL, который возвращает все и извлекает данные, которые текущий пользователь не может видеть в BL.
  • Создайте DAL, у которого есть определенное знание ролей, которые использует ваше приложение: DAL.GetCustomersForAdmin() и DAL.GetCustomersForMember() Но это немного опасно, так как вы будете привязаны к использованию этих ролей.
  • Есть базы данных/DAL, которое известна безопасность, и всегда возвращает только данные пользователя разрешен видеть, с помощью тех же методов: DAL.GetCustomers()
+0

Я думаю, что это то, что я хочу. Это выглядит сложным, хотя – Mike

+0

Многие вещи выглядят сложными снаружи - но не так уж плохи, как только вы находитесь; и как только вы доберетесь до скорости, вы сможете снова использовать его где угодно - в первый раз может быть медленным, но использование субэктавного использования будет намного быстрее. –

+0

Имея много данных, первая стратегия в теории займет гораздо больше времени на переносе БД, так как вы говорите, что вторая стратегия - это то, что я бы не предпочел, но как вы реализуете третью стратегию, будет ли единственное, что есть БД со всеми установленными пользователями? Что касается четвертой стратегии, в которой BL осведомлен о доступе пользователей, и использует DAL для получения только данных, к которым пользователи имеют доступ. Морфинг между первой и второй стратегиями? – jonas

1

Другого подхода вы можете исследовать (если развиваются. NET 3.5/4.0) использует Windows Identity Foundation.

Если вы заинтересованы в том, чтобы ваша логика авторизации была вне вашего веб-сайта (что я предполагаю, что если вы ожидаете использовать свой бизнес-слой из более чем 1-го интерфейса), я бы определенно рекомендовал взглянуть на WIF. Вы также можете интегрироваться с Active Directory с помощью ADFS v2.0 (который является ролью сервера в Windows Server 2008 R2).

Образцы & Практика выпустила guide, что может быть весьма полезно для копания в предмете.