Аутентификация.net Active Directory (ldap) с авторизацией членства
Я пытаюсь создать гибридное членство, которое аутентифицируется с помощью активного каталога (ldap), но авторизуется с использованием поставщика членства и ролей.
Я не хочу запрашивать активный каталог для каждой загрузки страницы, но я хочу первоначально аутентифицировать пользователя через активный каталог, а затем позволить провайдеру членства авторизовать доступ пользователей к каждой странице через свойства авторизации web.config.
Я новичок в модели членства.net и как реализовать этот тип гибридного решения. Я нашел много примеров для реализации Active Directory с веб-формами, но не решение моих проблем.
Любой псевдокод или общее описание этого решения также приветствуется.
Спасибо!
ОБНОВЛЕННЫЙ Вопрос: В настоящее время изучается реализация аутентификации в активном каталоге (AD) поверх схемы Членство / Роли. Первоначально проверяйте подлинность с помощью AD, обновляя таблицы базы данных Membership с указанием пользователя / ролей по мере необходимости, устанавливая пользователя как аутентифицированного с помощью Membership и позволяя членству обрабатывать все требования авторизации. Хотя это не так чисто, как создание провайдеров нестандартного членства / ролей, мне интересно, можно ли считать это решение действительным?
2 ответа
Вы можете сделать это, внедрив свой собственный слой над поставщиком членства, выполнив следующие действия.
- вам нужно проверить, прошел ли пользователь аутентификацию в активном каталоге
- после этого вам нужно будет добавить этого пользователя, если он не существует, в вашу базу данных членства и роли и использовать его позже для управления ролями использования и другими вещами
- После этого вы можете начать установку файла cookie для аутентификации для этого пользователя (если он действителен) и добавить его в ответ.
- каждый раз, когда аутентифицированный пользователь запрашивает страницу, вам не нужно проверять его по активному каталогу, вы должны делать это только для анонимных пользователей.
Это большая работа, но вы можете это сделать, ведь вам просто нужно больше узнать о членстве в Asp.net
Я бы порекомендовал использовать NTLM для получения текущего имени пользователя домена Windows и использовать его для предварительного заполнения поля имени пользователя вашей формы. Как только пользователь введет свой пароль и завершит аутентификацию в вашем приложении, выполните запрос LDAP к активному каталогу. Выйдите из них с дружественным сообщением, если аутентификация AD не проходит.
К сожалению, для этого ответа мне нужно слишком много кода.