Практическое руководство. Настройка входа пользователя в систему при использовании службы проверки подлинности WCF
Обновлен: Ноябрь 2007
В этом разделе показывается путь проверки настроенных учетных данных пользователя для проверки подлинности пользователей при вызове службы проверки подлинности ASP.NET с помощью Windows Communication Foundation (WCF). Обычно для проверки подлинности достаточно имени и пароля пользователя. Однако в некоторых случаях может понадобиться проверить идентификацию пользователя с помощью дополнительных учетных данных, например идентификационного номера.
Реализация WCF службы проверки подлинности используется для входа пользователя из клиентского приложения, которое может отправлять и получать сообщения SOAP 1.1, например Java приложение.
Проверка настроенных учетных данных для проверки подлинности
Создайте обработчик событий Authenticating в файле Global.asax веб-приложения.
В этом обработчике прочитайте содержимое свойства CustomCredential параметра AuthenticatingEventArgs обработчика, а затем выполните проверку подлинности этих значений.
В следующем примере показывается чтение двух значений проверки подлинности из свойства CustomCredential и последующая передача их в пользовательский класс проверки подлинности с именем StudentAuthentication.
Sub AuthenticationService_Authenticating _ (ByVal sender As Object, _ ByVal e As System.Web.ApplicationServices.AuthenticatingEventArgs) Dim studentid As String = String.Empty Dim answer As String = String.Empty Dim credentials As String() = _ e.CustomCredential.Split(New Char() {","c}) If (credentials.Length > 0) Then studentid = credentials(0) If (credentials.Length > 1) Then answer = credentials(1) End If End If Try e.Authenticated = _ StudentAuthentication.ValidateStudentCredentials _ (e.Username, e.Password, studentid, answer) Catch ex As ArgumentNullException e.Authenticated = False End Try e.AuthenticationIsComplete = True End Sub
void AuthenticationService_Authenticating(object sender, System.Web.ApplicationServices.AuthenticatingEventArgs e) { string studentid = String.Empty; string answer = String.Empty; string[] credentials = e.CustomCredential.Split(new char[] { ',' }); if (credentials.Length > 0) { studentid = credentials[0]; if (credentials.Length > 1) { answer = credentials[1]; } } try { e.Authenticated = StudentAuthentication.ValidateStudentCredentials (e.UserName, e.Password, studentid, answer); } catch (ArgumentNullException ex) { e.Authenticated = false; } e.AuthenticationIsComplete = true; }
В методе Application_Start файла Global.asax осуществите привязку обработчика событий к событию Authenticating.
В следующем примере показан способ привязки обработчика к событию Authenticating.
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) AddHandler System.Web.ApplicationServices.AuthenticationService.Authenticating, _ AddressOf Me.AuthenticationService_Authenticating End Sub
void Application_Start(object sender, EventArgs e) { System.Web.ApplicationServices.AuthenticationService.Authenticating += new EventHandler<System.Web.ApplicationServices.AuthenticatingEventArgs>(AuthenticationService_Authenticating); }
Вызовите службу проверки подлинности из приложения, которое может принять сообщение SOAP от веб-службы и передать дополнительные значения для проверки подлинности в свойство CustomCredential.
Компиляция кода
- Для выполнения этих примеров необходимо настроить службу проверки подлинности на веб-сервере. Дополнительные сведения см. в разделе Практическое руководство. Включение службы проверки подлинности WCF.
Отказоустойчивость
В предыдущем примере кода показан пользовательский класс проверки подлинности, который создает исключение ArgumentNullException, если какой-либо из параметров имеет значение null. Код должен обрабатывать все исключения, вызываемые во время проверки подлинности.
Безопасность
Следует всегда вызывать службу проверки подлинности с помощью SSL, используя протокол HTTPS.
См. также
Основные понятия
Общие сведения о службе проверки подлинности Windows Communication Foundation