Использование Active Directory для аутентификации пользователей на WWW веб-сайте - PullRequest
3 голосов
/ 13 марта 2010

Я смотрю на запуск нового веб-приложения, которое должно быть защищено (если по какой-то другой причине нам потребуется аккредитация PCI (Payment Card Industry) в какой-то момент).

От предыдущегоПри работе с PCI (в домене) предпочтительным методом является использование встроенной аутентификации Windows, которая затем передается через приложение в базу данных с помощью kerberos (поэтому у пользователя NT есть разрешения в БД).Это позволяет улучшить аудит, а также разрешения на уровне объекта (т. Е. Конечный пользователь не может прочитать таблицу кредитных карт).

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

Итак, теперь я смотрю на новое веб-приложение, которое будет наобщедоступный интернет.Одним из предложений является наличие сервера Active Directory и создание учетных записей Windows в AD для каждого пользователя сайта.Затем эти пользователи будут помещены в соответствующие группы NT, чтобы решить, какие разрешения БД они должны иметь (и к каким страницам они могут получить доступ).

ASP.Net уже предоставляет поставщика членства в AD и поставщика ролей, так что это должно бытьдовольно просто реализовать.

В связи с этим возникает ряд вопросов - масштабируемость, надежность и т. д., и мне было интересно, есть ли кто-нибудь с опытом такого подхода или, что еще лучше, с некоторыми хорошимипричины, почему делать это / не делать.

Любой вклад оценили

Ответы [ 3 ]

4 голосов
/ 19 марта 2010

Используя ADAM в проекте, я обнаружил, что это медведь. Документация для разработчиков может быть скудной, в ней есть причуды, отличающие ее от полной AD, и, самое главное, я не смог получить прямой ответ от MS относительно того, будет ли она полностью поддерживаться в будущем. У меня сложилось впечатление, что ADAM был дураком и что новые федеративные службы (ADFS) были тем местом, куда они хотели, чтобы люди шли. Просто перенести хранилище ADAM с одного рядового сервера на другой было больно. Тем не менее, мои проблемы с ADAM были связаны с разработкой и обслуживанием магазина. Он определенно обладает способностью масштабироваться и был надежным. Тем не менее, бывают случаи, когда вам нужно углубиться в заклинания 80-го уровня магии LDAP / Directory, чтобы понять, что она делает или не делает.

Для общедоступного сайта AD / ADAM может быть излишним IMO. Вы можете использовать альтернативных MembershipProviders, таких как SqlMembership, чтобы получить хороший уровень безопасности в отношении учетных данных. Если вы хотите пойти дальше, вы можете использовать шифрование базы данных (по крайней мере, в SQL Server встроена эта возможность) для шифрования информации, попадающей в область PII (Личная информация), и, конечно, для шифрования резервных копий. Преимущество хранилища аутентификации на основе базы данных состоит в том, что у вас есть все инструменты, которые предоставляет ваш продукт базы данных для масштабирования, резервного копирования, контроля доступа и т. Д.

РЕДАКТИРОВАТЬ: Позвольте мне добавить, что с .NET вы можете настроить свой сайт так, чтобы он работал под пользователем Windows и подключался к базе данных с помощью аутентификации Windows (при условии, что база данных поддерживает ее). Таким образом, учетные данные не должны храниться в файле конфигурации. Однако если по какой-либо причине вам пришлось хранить учетные данные, вы можете использовать DPAPI для шифрования учетных данных в файле конфигурации.

ADDITION В ответ на вопрос о защите ключей шифрования у вас есть пара вариантов. Во-первых, просто хэшируйте номера кредитных карт. Это значительно упрощает любые проблемы с доступом к данным, однако, это означает, что клиент должен будет повторно вводить номер своей карты для каждой покупки. Если вы хотите запомнить номер карты клиента, то вы переходите в новую область обслуживания ключей дешифрования. В этом случае вам абсолютно необходимо использовать проверку подлинности Windows для базы данных и изучить функцию расширенного управления ключами в SQL Server 2008, которая позволяет подключить стороннюю программу управления ключами к функциям шифрования SQL. Таким образом, только пользователь сайта будет иметь доступ к ключам, используемым для расшифровки. Существуют и другие решения, гарантирующие, что сайт не будет взломан. Больше всего беспокоит то, что кто-то получает копию базы данных незамеченной. Вот ссылка на использование SQL Server для совместимости с PCI:

Развертывание SQL Server 2008 на основе отраслевых стандартов безопасности данных платежных карт (PCI DSS) версии 1.2.

1 голос
/ 19 марта 2010

Это не прямой ответ, но наличие учетной записи пользователя AD означает, что вам нужна Windows CAL для этого пользователя.Другим способом было бы выдать клиентские сертификаты пользователям и сопоставить клиентские сертификаты пользователям AD в IIS.

Вы также можете рассмотреть AzMan с хранилищем SQL, доступным в Windows 2008 и выше или с открытым исходным кодом netsqlazman .

1 голос
/ 18 марта 2010

пара идей

Запустить AD / AM - Режим приложения Active Directory .

Хорошо масштабируется. Это тот же основной код, что и в AD. Подобные возможности управления. Солидная надежность. Работает с поставщиком членства ASPNET AD.

И это включено в Windows.


Также рассмотрите возможность использования федеративной системы идентификации через ADFS 2 .

в отличие от AD / AM, этот подход довольно передовой. Окончательная версия сервера ADFS v2 еще не доступна от Microsoft, но она находится на стадии «релиз-кандидата». Если у вас есть желание стать новичком, ADFS2 предоставляет возможность использовать федеративный подход к идентификации. Это означает, что вы можете принимать токены идентификаторов из различных существующих источников: для входа в Google, для входа в Yahoo, из любого источника OpenId и использовать его в качестве удостоверения на своем сайте. Пользователи не должны были бы «регистрироваться» и проходить аутентификацию для вас. Вместо этого ваш сайт будет соблюдать идентификацию и аутентификацию, предоставленные какой-либо доверенной третьей стороной, и выполнять авторизацию на основе этой идентификации.

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