Como: Usar o provedor de associação não-padrão para serviço de autenticação do WCF
Este tópico mostra como selecionar o membership provider por programação ao chamar o serviço de autenticação do ASP.NET usando Windows Communication Foundation (WCF).Você pode usar um membership provider não padrão quando você tem que autenticar os usuários usando membership provider diferentes, com base nas informações que você obter em tempo de execução.Para autenticar direto um membership provider não padrão, crie um manipulador de eventos para o evento Authenticating.
Você usa WCF para o serviço de autenticação para fazer logon em um usuário de uma aplicativo cliente que pode enviar e consumir uma mensagem SOAP 1.1, tal como um aplicativo Java.O aplicativo cliente pode autenticar o usuário usando as mesmo credenciais de usuário como um aplicativo ASP.NET.
Para autenticar usando membership provider não padrão
Criar e configurar o membership provider que deseja usar.
Para obter mais informações, consulte Implementando um Provedor de Associação e Configurando um aplicativo ASP.NET para usar associação.
No arquivo Global.asax, crie um manipulador de eventos para o evento Authenticating e adicione o código que autentica as credenciais do usuário chamando o membership provider personalizado.
O exemplo a seguir mostra um manipulador para o evento Authenticating que autentica as credenciais usando os provedores chamados ContosoSqlProvider,FabrikamSqlProvider, ou os membership provider padrão.As credenciais de usuário são armazenadas em bancos de dados diferentes com base no tipo de usuário.O manipulador de eventos determina qual provedor usar com base no email que é fornecido como o nome de usuário.
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; }
In the Application_Start method of the Global.asax file, bind the event handler for the Authenticating event.
The following example shows how to bind a handler to the Authenticating event.
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); }
Chamar o serviço de autenticação a partir um aplicativo que pode ler e consumir uma mensagem SOAP 1.1.
Compilando o código
You must set up the authentication service on a Web server for the previous examples to work.Para obter mais informações, consulte Como: Habilitar o serviço de autenticação do WCF.
Segurança
Always access the authentication service by using the Secure Sockets Layer (SSL), using HTTPS protocol.
Consulte também
Conceitos
Visão geral do serviço de autenticação Windows Communication Foundation