Compartilhar via


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

  1. 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.

  2. 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;
    }
    
  3. 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);
    }
    
  4. 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

Referência

AuthenticationService

AuthenticatingEventArgs

Outros recursos

Gerenciando usuários usando Associação