Поделиться через


Практическое руководство. Настройка входа пользователя в систему при использовании службы проверки подлинности WCF

Обновлен: Ноябрь 2007

В этом разделе показывается путь проверки настроенных учетных данных пользователя для проверки подлинности пользователей при вызове службы проверки подлинности ASP.NET с помощью Windows Communication Foundation (WCF). Обычно для проверки подлинности достаточно имени и пароля пользователя. Однако в некоторых случаях может понадобиться проверить идентификацию пользователя с помощью дополнительных учетных данных, например идентификационного номера.

Реализация WCF службы проверки подлинности используется для входа пользователя из клиентского приложения, которое может отправлять и получать сообщения SOAP 1.1, например Java приложение.

Проверка настроенных учетных данных для проверки подлинности

  1. Создайте обработчик событий Authenticating в файле Global.asax веб-приложения.

  2. В этом обработчике прочитайте содержимое свойства 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;
    }
    
  3. В методе 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);
    
    }
    
  4. Вызовите службу проверки подлинности из приложения, которое может принять сообщение SOAP от веб-службы и передать дополнительные значения для проверки подлинности в свойство CustomCredential.

Компиляция кода

Отказоустойчивость

В предыдущем примере кода показан пользовательский класс проверки подлинности, который создает исключение ArgumentNullException, если какой-либо из параметров имеет значение null. Код должен обрабатывать все исключения, вызываемые во время проверки подлинности.

Безопасность

Следует всегда вызывать службу проверки подлинности с помощью SSL, используя протокол HTTPS.

См. также

Основные понятия

Общие сведения о службе проверки подлинности Windows Communication Foundation

Ссылки

AuthenticationService

AuthenticatingEventArgs