Смешивание аутентификации Форм с аутентификацией Windows

Я имею (ASP.NET 3.5) приложение интранет, которое было разработано для использования аутентификации форм (наряду со значением по умолчанию aspnet система членства). Я также храню дополнительную информацию о пользователях в другой таблице, которая совместно использует ее первичный ключ с aspnet_users таблицей.

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

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

Существует ли способ заставить IIS проходить через имя учетной записи домена окон пользователя запроса? Мне не нужна надлежащая AD аутентификация, просто доменное имя.

49
задан dr_draik 12 February 2010 в 01:15
поделиться

4 ответа

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

4
ответ дан 7 November 2019 в 11:53
поделиться

К сожалению, то, что вы пытаетесь сделать, просто не поддерживается. Чтобы ASP.NET узнал имя пользователя Windows, необходимо использовать проверку подлинности Windows.

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

0
ответ дан 7 November 2019 в 11:53
поделиться

У меня есть кое-что, что вы можете попробовать - не уверен, что это сработает.

Раньше мы использовали Request.ServerVariables ["LOGON_USER"] , но, очевидно, чтобы это возвращало непустое значение, вам необходимо отключить анонимный доступ.

См. Эту статью: http://support.microsoft.com/default.aspx/kb/306359

Предлагается сохранить анонимный доступ на стороне IIS и проверку подлинности с помощью форм, но запретить анонимному пользователю как следует:

<authorization>
   <deny users = "?" /> <!-- This denies access to the Anonymous user -->
   <allow users ="*" /> <!-- This allows access to all users -->
</authorization>
0
ответ дан 7 November 2019 в 11:53
поделиться

(На самом деле больше для полноты информации)

I задал этот вопрос специалисту по безопасности .Net на конференции некоторое время назад. Он ответил, что это технически возможно, но он никогда не видел, чтобы это было сделано (и дать ему знать, сделал ли я это, и это сработало!).

Он предположил, что это можно сделать, создав собственный фильтр ISAPI и установив его в IIS. Фильтр ISAPI будет перехватывать запросы и в основном выполнять работу, которую выполняет IIS при использовании встроенной проверки подлинности, но возвращается к использованию форм, если этого не было. Это включало в себя сложную логику запроса / ответа в фильтре. Это было для IIS6, поэтому в IIS7 все могло быть иначе.

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

4
ответ дан 7 November 2019 в 11:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: