Asp.net mvc 3 Проверка подлинности Windows с формой входа - PullRequest
0 голосов
/ 27 ноября 2011

Я уже создал приложение проверки подлинности формы. У меня была таблица User и я создал собственный поставщик членства. Моя пользовательская таблица имеет отношения с другими таблицами, такими как роли и разрешения.

  1. Я изменил это, чтобы работать с использованием аутентификации Windows. Это выглядит легко, но я понятия не имею, как все еще иметь возможность читать разрешения из моих таблиц? некоторые таблицы относятся к пользовательской таблице и требуют идентификатора пользователя, что здесь делать? сломать внешний ключ?

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

Надеюсь, я получу простые и легкие ответы.

Привет

Ответы [ 2 ]

0 голосов
/ 27 ноября 2011
  1. В ваших контроллерах вы можете использовать User.Identity.Name для получения имени пользователя AD пользователя.Затем вы можете добавить в свою таблицу пользователей поле ADUSername (или обновить значения в существующем поле имени пользователя), чтобы связать вошедшего в систему пользователя с существующей записью пользователя в вашей базе данных.

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

0 голосов
/ 27 ноября 2011

Если вы используете проверку подлинности Windows, пользователю будет предложено ввести учетные данные только для доступа к вашему сайту. Вы не сможете предотвратить это. Они даже не получат ваш код, пока не будут аутентифицированы.

Мы делали подобные вещи, используя единый вход (SSO), хотя я никогда не привязывал его к аутентификации Windows. Идея заключается в том, что у вас есть два приложения, которые используют общие учетные данные пользователя, и, если вы вошли в одно, вы вошли в другое. Первое приложение будет вашим обычным приложением, которое поддерживает аутентификацию на основе форм. Вторым будет приложение, которое выполняет только аутентификацию Windows, а затем, при успешном входе в систему, перенаправляет на ваше обычное приложение. Поскольку вы уже прошли проверку подлинности, обычное приложение просто создает свой стандартный файл cookie для проверки подлинности и переносит вас на главную страницу приложения.

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

Эскиз процесса может выглядеть следующим образом:

  1. Получить запрос к защищенному действию на сайте.
  2. Если не аутентифицирован, перенаправить на сайт авторизации без токена
    • Ваш сайт входа в систему содержит форму входа в систему на основе форм и ссылку на URL-адрес аутентификации Windows
  3. Пользователь нажимает URL-адрес аутентификации Windows
  4. Сайт аутентификации Windows аутентифицируется, создает одноразовый токен использования в БД для пользователя и перенаправляет обратно на ваше действие входа с токеном
  5. Ваше действие по входу возвращает токен через обратный канал WebRequest на сервер аутентификации Windows.
  6. Сервер аутентификации Windows проверяет токен, помечая его как использованный, а затем возвращает имя пользователя для действия входа в систему.
  7. Ваше действие при входе создает файл cookie для проверки подлинности стандартных форм и продолжается как обычно.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...