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


Практическое руководство. Использование нестандартного поставщика членства для службы проверки подлинности WCF

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

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

Используйте WCF для службы проверки подлинности для входа пользователя из клиентского приложения, которое может отправлять и получать сообщения SOAP 1.1, например Java приложение. Клиентское приложение может проверить подлинность пользователя с помощью тех же учетных данных пользователя, которые использует веб-приложение ASP.NET.

Проверки подлинности с помощью нестандартного поставщика членства

  1. Создайте и настройте нужного поставщика членства.

    Дополнительные сведения см. в разделах Реализация поставщика членства и Настройка приложения ASP.NET для использования членства.

  2. В файле Global.asax создайте обработчик событий Authenticating и добавьте код, выполняющий проверку подлинности учетных данных пользователя путем вызова пользовательского поставщика членства.

    В следующем примере показан обработчик для события Authenticating, который проверяет подлинность учетных данных при помощи поставщиков с именами ContosoSqlProvider, FabrikamSqlProvider или поставщика членства по умолчанию. Учетные данные пользователей хранятся в разных базах данных в зависимости от типа пользователя. Обработчик событий определяет используемого поставщика исходя из адреса электронной почты, предоставляемого в качестве имени пользователя.

    Sub AuthenticationService_Authenticating _
       (ByVal sender As Object, _
        ByVal e As System.Web.ApplicationServices.AuthenticatingEventArgs)
    
        If (e.Username.IndexOf("@contoso.com") >= 0) Then
            e.Authenticated = Membership.Providers("ContosoSqlProvider").ValidateUser(e.Username, e.Password)
        ElseIf (e.Username.IndexOf("@fabrikam.com") >= 0) Then
            e.Authenticated = Membership.Providers("FabrikamSqlProvider").ValidateUser(e.Username, e.Password)
        Else
            e.Authenticated = Membership.Provider.ValidateUser(e.Username, e.Password)
        End If
        e.AuthenticationIsComplete = True
    End Sub
    
    void AuthenticationService_Authenticating(object sender, System.Web.ApplicationServices.AuthenticatingEventArgs e)
    {
        if (e.UserName.IndexOf("@contoso.com") >= 0)
        {
            e.Authenticated = Membership.Providers["ContosoSqlProvider"].ValidateUser(e.UserName, e.Password);
        }
        else if (e.UserName.IndexOf("@fabrikam.com") >= 0)
        {
            e.Authenticated = Membership.Providers["FabrikamSqlProvider"].ValidateUser(e.UserName, e.Password);
        }
        else
        {
            e.Authenticated = Membership.Provider.ValidateUser(e.UserName, e.Password);
        }
        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 1.1.

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

Для работы предыдущих примеров необходимо настроить службу проверки подлинности на веб-сервере. Дополнительные сведения см. в разделе Практическое руководство. Включение службы проверки подлинности WCF.

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

Всегда получайте доступ к службе проверки подлинности с помощью (SSL), используя протокол HTTPS.

См. также

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

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

Ссылки

AuthenticationService

AuthenticatingEventArgs

Другие ресурсы

Управление пользователями путем объединения их в группы