Реклама:

ВНИМАНИЕ! Маркеры, созданные с помощью опции Directory Service Mapping, делегировать нельзя.

Смешанный режим аутентификации

Иногда возникает необходимость в поддержке внешних и внутренних пользователей (например, когда внутренние пользователи применяют подключение Windows для разового предъявления пароля, а внешние регистрируются, воспользовавшись предоставленной страницей регистрации). К сожалению, ASP.NET не поддерживает режимы аутентификации Windows и Forms в одном приложении. По существуют способы лля обхода этого ограничения. Далее речь пойдет об использовании аутентификации Forms и аутентификации в смешанном режиме путем изменения поведения конвейера HTTP.

Использование аутентификации Forms

Суть применения данного метода состоит в том, что аутентификацию использует главное приложение Forms, а вы создаете отдельное приложение для регистрации пользователей Windows. В регистрационном приложении мандаты Windows преобразуются в билет аутентификации Forms, после чего пользователь перенаправляется К главному приложению.

Это означает, что «обычные» пользователи из Интернета будут получать доступ к приложению с использованием URL/MixedModel. а внутренние пользователи с учетной записью Windows будут применять URL/MixedModel/WinLogon.

Главное приложение представляет собой стандартное Web-приложение с аутентификацией Forms. Приложение WinLogon обрабатывает событие Authorize Request, извлекает имя учетной записи и роли Windows, конструирует билет аутентификации и перенаправляет пользователя к главному приложению default.aspx.

На этот раз событие Authorize Request выбирается потому, что код будет запускаться только в случае авторизации входящего пользователя Windows для приложения. Вы можете указать разрешенных пользователей или группы Windows в элементе authorization >.

Перенаправление из Windows к аутентификации Forms

<%@ Application language="C«" !6>

<%# Import Namespace="System.Security.Principal" %> <%@ Import Namespace="LeastPrivilege" %>

<script runat="sorver">

protected void Applicat ion_AijthorizeRequest( object sender, EventArgs e)

i

if (Context.Request.IsAuthenticated) {

string[] roles; GenericPrincipal p = formsAutMHelperConvertWindowsToGener ic( (WinflowsIdennty)Conlexi .User. Identity, out roles);

FormsAuthenticationTicket ticket = FQrmsAutbHelper.CreateAuthenticationTicket( p.Identity.Name, roles); FormsAuthHeiper.SetAut'ienticy* LonCookie(tiCket);

// Перенаправление к главному приложению Forms Response.Redirect( "hf Tp://server/KixedModeUsingForms/default. .aspx");

}

}

</script>

Как и в случае использования описанных ранее сценариев SSO, следует убедиться в том, что имя билета аутентификации, путь cookies и машинный ключ синхронизированы в обоих приложениях. Кроме того, вы можете добавить в приложение WinLogon элемент <authorization>, чтобы разрешить доступ только определенным пользователям.

<authorization>

<allow roies="DOMAIN\DOMAIN USERS" />


⇐ Предыдущая страница| |Следующая страница ⇒