олицетворение - tolstykh.com

advertisement
Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4-го курса кафедры Компьютерных
технологий физического факультета Донецкого национального университета
Технологии
разработки Internetприложений
ASP.NET приложения:
Безопасность – проверка подлинности,
олицетворение
проф. В.К.Толстых, www.tolstykh.com
Для обеспечения безопасного авторизированного
доступа к Web-приложению и его ресурсам
необходимо решить следующие задачи:
1.
Выбор варианта проверки подлинности (см. далее), при необходимости –
конфиденциальности и целостности.
2.
Реализация аутентификации пользователя – определение идентичности
пользователя и обеспечения гарантий этой идентичности.
3.
Реализация авторизации – управление списком разрешающих или
запрещающих правил, регулирующих доступ к содержимому
аутентифицированного пользователя.
Проверка подлинности ASP.NET
Страницы ASP.NET исполняются внутри рабочего процесса или программы
Windows. Все программы Windows работают с отдельным удостоверением безопасности. На
веб-сервере, работающем под управлением IIS, рабочий процесс ASP.NET выполняется в пуле
приложений. Пул приложений определяет удостоверение, под которым выполняется рабочий
процесс и все его приложения. По умолчанию это – учетная запись ApplicationPoolIdentity для
IIS 7, NetworkService – для IIS 6, ASPNET – для IIS 5.
В качестве альтернативы, с помощью настройки использования приложения с
олицетворением (доступно в IIS 7), можно задать для ASP.NET выполнение под другим
удостоверением или под удостоверением Windows-пользователя, сделавшего запрос.
Варианты проверки подлинности:







анонимная проверка подлинности
проверки подлинности с использованием олицетворения ASP.NET
обычная проверка подлинности
дайджест-проверки подлинности
проверка подлинности с помощью форм
проверка подлинности Windows
сопоставление сертификата клиента
Консоль диспетчера IIS 7
Анонимная проверка подлинности
Включение анонимной проверки подлинности позволяет редактировать учетную
запись, которая используется службами IIS для доступа к узлу и приложению. При
анонимном доступе IIS 7 по умолчанию использует IUSR в качестве имени пользователя.
Пользователь IUSR создаётся при установке IIS.
Замечание. Если изменить учётную запись анонимной проверки подлинности с IUSR на
какую-либо другую, например, на сетевую, то анонимные клиенты Web-приложений получат
доступ ко всей внутренней сети!
Проверка подлинности с использованием
олицетворения ASP.NET
Олицетворение ASP.NET используется, когда необходимо выполнить приложение
пользователя ASP.NET в контексте безопасности, отличном от контекста по умолчанию для
приложения ASP.NET.
Если разрешить олицетворение для приложения ASP.NET, это приложение сможет работать в
одном из двух вариантов: от имени пользователя, прошедшего проверку подлинности в
службах IIS 7, или от имени учетной записи, заданной разработчиком для всех
пользователей его приложения . По умолчанию олицетворение ASP.NET выключено.
Процедуру олицетворения можно выполнить несколькими способами:
1.
с помощью пользовательского интерфейса,
2.
команды Appcmd.exe в окне командной строки,
3.
прямым изменением файлов конфигурации,
посредством написания сценариев WMI (Windows Management Instrumentation) –
VBScript, Windows PowerShell.
4.
Рассмотрим 1, 3
Олицетворение с помощью диспетчера IIS 7
Приложение будет
работать от имени
пользователя, прошедшего
проверку подлинности
После этого выбора службы IIS будут
использовать выбранное удостоверение для контекста безопасности
приложения ASP.NET.
Приложение будет работать от
заданной учётной записи при
анонимном доступе
Олицетворение с помощью настройки конфигурации
<identity> в <system.web>
(Имперсонализация )
<identity impersonate="true|false"
userName="domain|username"
password="<secure password>"/>
Атрибут impersonate указывает, следует ли использовать олицетворение клиента.
Атрибут password задает используемый пароль, если impersonate имеет значение true.
Атрибут userName задает имя пользователя, если impersonate имеет значение true.
Чтобы зашифровать имя пользователя и пароль и сохранить их в реестре, установите значения
атрибутов userName и password, как показано в следующем примере:
userName="registry:HKLM\Software\AspNetProcess,Name"
password="registry:HKLM\Software\AspNetProcess,Pwd"
Учетные данные должны быть представлены в формате REG_BINARY и содержать результат
вызова функции Windows API CryptProtectData. Для создания зашифрованных учетных данных и
сохранения их в реестре можно воспользоваться программой Aspnet_setreg.exe, которая
выполняет операции шифрования с помощью функции CryptProtectData.
Доступ к параметрам конфигурации программными
средствами
<%@ Import Namespace="System.Web.Configuration" %>
<%@ Import Namespace="System.Configuration" %>
<%@ Import Namespace="System.Text" %>
try
{
// Установка пути к Web-приложению, где находится Web.config
string configPath = "/MyAppRoot";
// Получение объекта конфигурации по заданному пути к Web.config
Configuration config = WebConfigurationManager.OpenWebConfiguration(configPath);
// Получение объекта, соответствующего разделу <identity>
IdentitySection section = (IdentitySection)config.GetSection("system.web/identity");
// Чтение раздела <identity>
StringBuilder identity = new StringBuilder();
identity.Append("Impersonate: ");
identity.Append(section.Impersonate.ToString());
// Показ информации раздела <identity>
ConfigId.Text = identity.ToString();
}
catch (Exception e) { ConfigId.Text = e.ToString(); }
Обычная проверка подлинности
Для обычной проверки подлинности необходимо, чтобы
для доступа к содержимому пользователи предоставляли имя
пользователя и пароль. Для этого метода проверки подлинности
не требуется специальный обозреватель. Она также работает при
подключении через брандмауэры и прокси-серверы. Однако
недостатком метода является то, что при его использовании по
сети пересылаются незашифрованные пароли.
Замечание. Обычная проверка подлинности может использоваться, только если известно,
что соединение между клиентом и сервером безопасно. Подключение должно
устанавливаться по выделенной линии или с помощью SSL-шифрования и протокола TSL.
Дайджест-проверка подлинности
При дайджест-проверке подлинности контроллер домена Windows используется,
чтобы проверить подлинность пользователей, которые запросили доступ к содержимому вебсервера. Дайджест-проверка подлинности в службах IIS 6.0 называлась расширенной краткой
проверкой подлинности. Когда требуется более высокий по сравнению с обычной проверкой
подлинности уровень безопасности, рекомендуется применять дайджест-проверку
подлинности, особенно если в производственной среде имеются брандмауэры и проксисерверы.
Проверка подлинности с помощью форм
При проверке подлинности с помощью форм используется перенаправление на
стороне клиента, чтобы направить непроверенных пользователей к HTML-форме, в которую
они могут ввести свои учетные данные, обычно в виде имени пользователя и пароля. После
проверки учетных данных пользователи перенаправляются на страницу, которую они
первоначально запросили.
Замечание. При проверке подлинности с помощью форм имя пользователя и пароль пересылаются в веб-сервер в виде обычного текста, поэтому следует использовать шифрование SSL
для страницы входа и всех других страниц приложения.
Проверка подлинности Windows
Проверку подлинности Windows следует использовать при необходимости проверки
подлинности пользователей с помощью протоколов NTLM или Kerberos. Проверка подлинности
Windows не пригодна для использования в Интернете, так как эта среда не требует и не
шифрует учетные данные пользователя.
Проверка подлинности Windows лучше всего подходит для интрасети по приведенным ниже
причинам:
1.
2.
3.
4.
Клиентские компьютеры и веб-серверы находятся в одном домене.
Администраторы могут обеспечить наличие на всех компьютерах обозревателей
Internet Explorer не ниже версии 2.0.
Не требуется подключений через HTTP-прокси, которые не поддерживаются NTLM.
Для работы Kerberos v5 требуется подключение к службе каталогов Active Directory,
что не представляется возможным в Интернете.
Download