Практическое руководство. Использование нестандартного поставщика членства для службы проверки подлинности WCF
Обновлен: Ноябрь 2007
В этом разделе показано, как программно выбрать поставщика членства при вызове службы проверки подлинности ASP.NET с помощью Windows Communication Foundation (WCF). Можно использовать нестандартного поставщика членства при наличии проверки подлинности пользователей с помощью различных поставщиков членств, на основе сведений, полученных во время выполнения. Для проверки подлинности с помощью нестандартного поставщика членства необходимо создать обработчик событий Authenticating.
Используйте WCF для службы проверки подлинности для входа пользователя из клиентского приложения, которое может отправлять и получать сообщения SOAP 1.1, например Java приложение. Клиентское приложение может проверить подлинность пользователя с помощью тех же учетных данных пользователя, которые использует веб-приложение ASP.NET.
Проверки подлинности с помощью нестандартного поставщика членства
Создайте и настройте нужного поставщика членства.
Дополнительные сведения см. в разделах Реализация поставщика членства и Настройка приложения ASP.NET для использования членства.
В файле 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; }
В методе 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 1.1.
Компиляция кода
Для работы предыдущих примеров необходимо настроить службу проверки подлинности на веб-сервере. Дополнительные сведения см. в разделе Практическое руководство. Включение службы проверки подлинности WCF.
Безопасность
Всегда получайте доступ к службе проверки подлинности с помощью (SSL), используя протокол HTTPS.
См. также
Основные понятия
Общие сведения о службе проверки подлинности Windows Communication Foundation