Share via


Cómo: Utilizar el proveedor de pertenencia de ASP.NET

El proveedor de pertenencia de ASP.NET es una característica que permite a los programadores de ASP.NET crear sitios web que permiten a los usuarios crear combinaciones únicas de nombre de usuario y contraseña. Con esta función, cualquier usuario puede establecer una cuenta en el sitio e iniciar sesión para obtener acceso exclusivo al sitio y a sus servicios. Esto contrasta con la seguridad de Windows, que exige a los usuarios que tengan cuentas en un dominio de Windows. En su lugar, cualquier usuario que proporcione sus credenciales (la combinación de nombre de usuario/contraseña) puede utilizar el sitio y sus servicios.

Para obtener una aplicación de ejemplo, consulte Proveedor de pertenencia y roles. Para obtener información acerca de cómo utilizar la característica del proveedor de funciones de ASP.NET, vea Cómo: Utilizar el proveedor de funciones ASP.NET con un servicio.

La característica de pertenencia requiere el uso de una base de datos de SQL Server para almacenar la información de usuario. La característica también incluye métodos para realizar una pregunta a cualquier usuario que haya olvidado su contraseña.

Los programadores de Windows Communication Foundation (WCF) se pueden aprovechar de estas características con fines de aumento de la seguridad. Cuando se integran en una aplicación de WCF, los usuarios deben proporcionar una combinación de nombre de usuario y contraseña a la aplicación cliente de WCF. Para transferir los datos al servicio de WCF, use un enlace que admita credenciales de nombre de usuario/contraseña, como el WSHttpBinding (en configuración, el wsHttpBinding Element) y establezca el tipo de credenciales en UserName. En el servicio, la seguridad WCF autentica al usuario en función del nombre de usuario y contraseña y también asigna la función especificada por la función ASP.NET.

ms731049.note(es-es,VS.100).gifNota:
WCF no proporciona métodos para rellenar la base de datos con combinaciones de nombre de usuario/contraseña u otra información de usuario.

Para configurar el proveedor de pertenencia

  1. En el archivo Web.config, bajo el elemento <system.web>, cree un elemento <membership>.

  2. Bajo el elemento <membership>, cree un elemento <providers>.

  3. Como elemento secundario del elemento <providers>, agregue un elemento <clear /> para vaciar la colección de proveedores.

  4. Bajo el elemento <clear />, cree un elemento <add> con los siguientes atributos establecidos en los valores adecuados: name, type, connectionStringName, applicationName, enablePasswordRetrieval, enablePasswordReset, requiresQuestionAndAnswer, requiresUniqueEmail, y passwordFormat. El atributo name se utiliza más adelante como un valor en el archivo de configuración. El siguiente ejemplo lo define en SqlMembershipProvider.

    En el ejemplo siguiente se muestra la sección de configuración.

    <!-- Configure the Sql Membership Provider -->
    <membership defaultProvider="SqlMembershipProvider" userIsOnlineTimeWindow="15">
      <providers>
        <clear />
          <add 
            name="SqlMembershipProvider" 
            type="System.Web.Security.SqlMembershipProvider" 
            connectionStringName="SqlConn"
            applicationName="MembershipAndRoleProviderSample"
            enablePasswordRetrieval="false"
            enablePasswordReset="false"
            requiresQuestionAndAnswer="false"
            requiresUniqueEmail="true"
            passwordFormat="Hashed" />
      </providers>
    </membership>
    

Para configurar la seguridad de servicio para que acepte la combinación de nombre de usuario/contraseña

  1. En el archivo de configuración, en el elemento <system.ServiceModel>, agregue un elemento <bindings>.

  2. Agregue wsHttpBinding Element a la sección de enlaces. Para obtener más información sobre la creación de un elemento de enlace WCF, vea Cómo: Especificar un enlace de servicio en la configuración.

  3. Establezca el atributo mode del elemento <security> en Message:

  4. Establezca el atributo clientCredentialType del elemento <message> en UserName: Esto especifica que un par de nombre de usuario y contraseña se utilizará como credencial del cliente.

    El siguiente ejemplo muestra el código de configuración para el enlace.

    <system.serviceModel>
    <bindings>
      <wsHttpBinding>
      <!-- Set up a binding that uses UserName as the client credential type -->
        <binding name="MembershipBinding">
          <security mode ="Message">
            <message clientCredentialType ="UserName"/>
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    </system.serviceModel>
    

Para configurar un servicio para que utilice el proveedor de pertenencia

  1. Agregue un elemento secundario al elemento <system.serviceModel>, agregue un elemento <behaviors>.

  2. Agregue serviceBehaviors section al elemento <behaviors>.

  3. Añada Behavior element y defina el atributo name en un valor adecuado.

  4. Agregue <serviceCredentials> Element al elemento <behavior>.

  5. Agregue userNameAuthentication element al elemento <serviceCredentials>.

  6. Defina el atributo userNamePasswordValidationMode a MembershipProvider.

    ms731049.Important(es-es,VS.100).gif Nota:
    Si no se establece el valor userNamePasswordValidationMode, WCF utiliza la autenticación de Windows en lugar del proveedor de pertenencia de ASP.NET.

  7. Establezca el atributo membershipProviderName en el nombre del proveedor (especificado al agregar el proveedor en el primer procedimiento de este tema). El ejemplo siguiente muestra el fragmento <serviceCredentials> en este punto.

    <behaviors>
       <serviceBehaviors>
          <behavior name="MyServiceBehavior">
             <serviceCredentials>
                <userNameAuthentication 
                userNamePasswordValidationMode="MembershipProvider"
                membershipProviderName="SqlMembershipProvider" />
             </serviceCredentials>
          </behavior>
       </serviceBehaviors>
    </behaviors>
    

Ejemplo

El siguiente código muestra la configuración para un servicio que utiliza la característica de pertenencia de ASP.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="MyServiceBehavior" name="Microsoft.Samples.GettingStarted.CalculatorService">
        <endpoint address="https://microsoft.com/WCFservices/Calculator"
          binding="wsHttpBinding" bindingConfiguration="MembershipBinding"
          name="ASPmemberUserName" contract="Microsoft.Samples.GettingStarted.ICalculator" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyServiceBehavior">
          <serviceCredentials>
            <userNameAuthentication 
              userNamePasswordValidationMode="MembershipProvider"
              membershipProviderName="SqlMembershipProvider" />
          </serviceCredentials>
        </behavior>
          </serviceBehaviors>
    </behaviors>
    <bindings>
      <wsHttpBinding>
        <binding name="MembershipBinding">
          <security mode="Message">
            <message clientCredentialType="UserName" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
  </system.serviceModel>
</configuration>

Vea también

Tareas

Cómo: Utilizar el proveedor de funciones ASP.NET con un servicio
Proveedor de pertenencia y roles