Средства разработки приложений


Аутентификация - часть 3


Для этого каждый его последующий запрос должен идентифицироваться на основе ранее проведенной аутентификации, то есть сначала Web-сервер, а потом и сервер приложения должны распознать пользователя и восстановить контекст его работы с ИС.

Сценарий процесса приведен на рисунке 7.

Рисунок 7.

Первым делом в запросе пользователя к Web-серверу ищется специализированное cookie - билет аутентификации (authTicket). Этот билет содержит некоторую информацию о пользователе и говорит Web-серверу о том, что пользователь уже аутентифицирован. Для активизации этой функциональности на Web-сервере необходимо включить Forms Authentication.

Идентификация пользователя происходит в методе AuthenticateRequest Web-сервера. Этот метод вызывается сервером в начале обработки каждого запроса. //Получаем из Cookies билет аутентификации string cookieName = FormsAuthentication.FormsCookieName; HttpCookie authCookie = Context.Request.Cookies[cookieName]; System.Web.Security.FormsAuthenticationTicket authTicket = null; try { authTicket = System.Web.Security.FormsAuthentication.Decrypt(authCookie.Value); } catch(Exception) { return; } if (null == authTicket) { return; } //Получаем идентификатор сессии пользователя из билета аутентификации string sessionID = authTicket.UserData; ClientSecurityContext securityContext = null; //Восстанавливаем сессию пользователя по ее идентификатору securityContext = (ClientSecurityContext)SecurityContextContainer.GetInstance()[sessionID]; if (securityContext != null) { ClientSecurityContext.Current = securityContext; //Ассоциируем Principal объект с текущим потоком Context.User = securityContext.User; } else { System.Web.Security.FormsAuthentication.SignOut(); Response.Redirect("logout.aspx"); }

Теперь пользователь аутентифицирован на стороне Web-сервера и может выполнять программы, реализующие логику Web-приложения. В процессе выполнения этих программ Web-сервер может обращаться к серверу приложения. Естественно, что и там запрос пользователя необходимо аутентифицировать.Для этого на сервер приложения передается SID, который извлечен из билета аутентификации Web-сервером. По SID происходит аутентификация и восстанавливается пользовательская сессия на сервере приложения.


Начало  Назад  Вперед