.NET ORM и безопасность - PullRequest
1 голос
/ 26 мая 2010

Мы собираемся использовать инструмент ORM с настольным приложением .NET. Инструмент позволяет создавать постоянные классы. Он генерирует все таблицы базы данных автоматически.

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

Вопрос в том, есть ли возможность управления доступом с помощью ORM, без создания механизмов аутентификации базы данных вручную? Есть ли на рынке продукт, позволяющий это сделать?

Мы думали об ограничении доступа в самой программе, но пользователи могут легко получить доступ к базе данных напрямую и обойти ограничения программы.

Спасибо.

Ответы [ 3 ]

1 голос
/ 26 мая 2010

Инструмент ORM полностью на стороне клиента. В то время как некоторые могут создавать объекты базы данных, которые хранят метаданные о самом ORM, они не могут обеспечить какие-либо средства обеспечения реальной безопасности базы данных.

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

0 голосов
/ 26 мая 2010

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

Вы можете посмотреть на одну из доступных платформ AoP, Postsharp - одна из популярных, вот один из примеров Postsharp:

public class Employee
{
    public string FirstName;
    public string LastName;

    [SecuredData("Manager,HR", "HR")]
    public decimal Salary;
}

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

0 голосов
/ 26 мая 2010

Выглядит как хороший кандидат для использования аутентификации Active Directory.

Если это вариант, взгляните на пространство имен System.DirectoryServices. Два верхних наиболее важных класса - DirectoryEntry и DirectorySearcher.

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

В противном случае, возможно, Enterprise Library и Security Application Block удастся сделать что-то хорошее для вас, то есть только через конфигурацию XML и атрибуты в ваших классах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...