Как пройти аутентификацию в Active Directory из кода веб-службы ASP.NET? - PullRequest
9 голосов
/ 31 июля 2009

У меня есть несколько сайтов для работы, которые живут за пределами корпоративной локальной сети - и, следовательно, вне диапазона прямой связи Active Directory (A / D) - но для которых я хотел бы иметь возможность проходить аутентификацию пользователей против корпоративных серверов A / D, а также вторичного хранилища пользователей / ролей ***. Псевдокод этого действия следующий:

  1. Пользователь вводит имя пользователя / пароль в форму входа на внешний сайт.
  2. Внешний веб-сайт вызывает веб-сервис внутри локальной сети, который может общаться с A / D.
  3. Веб-служба проверяет, можно ли подтвердить подлинность имени пользователя и пароля, сопоставленных с пользователем в A / D. Если это так, верните список ролей A / D, членом которых является пользователь.
  4. Если имя пользователя / пароль не могут быть найдены / аутентифицированы в A / D, проверьте базу данных / службу, которая является вторичным хранилищем информации о пользователе / ​​роли. Верните все роли, в которых используется, если они проходят аутентификацию на вторичном сервере аутентификации.
  5. Вернуть список ролей пользователя на вызывающем веб-сайте.

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

Ответы [ 3 ]

1 голос
/ 31 июля 2009

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

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

1 голос
/ 31 июля 2009

Я думаю, что здесь есть пара слоев, каждый из которых имеет свой вопрос:

Как мне получить доступ к веб-сервису в локальной сети из DMZ?
Это сложный вопрос, поскольку он действительно нарушает концепцию разделения DMZ / LAN. Как правило, соединения между LAN и DMZ разрешены (и на ограниченной основе) только со стороны LAN - таким образом, защищенная DMZ не может инициировать контакт с LAN, и она чрезвычайно ограничена в том, что она может делать (она не может создавать проблемы). произвольные запросы, отвечают только на запросы из локальной сети).

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

По моему опыту, эти проблемы приводят к тому, что AD вне локальной сети просто не выполняется. Компании предпочитают либо привлекать внешних пользователей в локальной сети, используя VPN, аутентифицированную с помощью ключей RSA (тех небольших цепочек для ключей, которые показывают постоянно меняющийся набор номеров), либо они используют полностью отдельный набор имен входа для сервисов зоны DMZ.

0 голосов
/ 31 июля 2009

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

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