Это может быть дубликат (не уверен), но так как я не могу утолить свою жажду правильного ответа (0: вот так:
Я должен предоставить единый вход для моего веб-приложения asp.net. Где:
Случай 1. Пользователь может войти без учетных данных, если пользователь уже находится в домене (вошел в домен windows).
Случай 2. Пользователю разрешено входить в систему, если пользователь не находится в домене, запрашивая / проверяя учетные данные пользователя для входа из активного каталога.
Вопрос 1a. Мне были бы интересны комментарии о шагах, которые я «выполняю» и «должен выполнить», чтобы выполнить требование. Как я могу улучшить это? Улучшение смысла, это правильный способ / подход к предоставлению вышеуказанных необходимых функций?
Вопрос 1b. Кроме того, в настоящее время у меня есть жестко закодированные роли в моей базе данных; Я планирую переместить его в роли пользователя активного каталога; чтобы я мог использовать функциональность метода .IsInRole. Что вы думаете об этом?
Прямо сейчас я реализовал это следующим образом.
Для случая 1 приложение использует:
Проверка подлинности Windows; в основном как следующее:
return ((WindowsIdentity)(HttpContext.Current.User.Identity)).IsAuthenticated;
Приложение продолжит работу, если его аутентифицированный пользователь.
Для случая 2 заявка:
Предоставляет страницу, которая запрашивает имя домена, идентификатор пользователя и пароль.
Проверяет, существует ли пользователь в активном каталоге; Ниже приведен фрагмент кода.
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(SAMAccountName=" + username + ")";
search.PropertiesToLoad.Add("cn");
SearchResult result = search.FindOne();
Приложение продолжает работу, если находит запись пользователя.
Обратите внимание, что это включает в себя изменения, рекомендованные в файле web.config, например следующий фрагмент:
<authentication mode="Forms">
<forms loginUrl="~/UI/Pages/Login.aspx" defaultUrl="Default.aspx" name="adAuthCookie" timeout="60" path="/" />
</authentication>
<authorization>
<deny users="?"/>
<allow users="*"/>
</authorization>
<identity impersonate="true"/>
Похоже, что добавление ролей (администратор, супервизор, гость) к ролям активного каталога намного лучше, но тогда, когда я разверну свое приложение, как мне будет добавлять эти жестко закодированные роли в активный каталог? Ну ... просто мысли вслух.