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


Как использовать поставщик членства ASP.NET

Поставщик членства в среде ASP.NET — это функция, которая позволяет разработчикам ASP.NET создавать веб-узлы с возможностью создания пользователями уникальных комбинаций имени пользователя и пароля. Эта функция позволяет любому пользователю создавать на узле учетную запись и при входе получать монопольный доступ к узлу и его службам. В этом заключается отличие от безопасности Windows, по условиям которой пользователи обязаны создавать ученые записи в домене Windows. Вместо этого любой пользователь, который предоставляет свои учетные данные (сочетание имени пользователя и пароля), может использовать узел и его службы.

Пример приложения см. в разделе Поставщик членства и ролей. Сведения об использовании функции поставщика ролей ASP.NET см. в разделе Как использовать поставщик ролей ASP.NET со службой.

Функция членства требует использования базы данных SQL Server для хранения сведений о пользователе. Эта функция также включает методы напоминания пользователю его пароля с помощью специального вопроса.

Разработчики Windows Communication Foundation (WCF) могут воспользоваться преимуществами этих функций в целях безопасности. Когда эти функции интегрированы в приложение WCF, пользователи должны предоставлять сочетание имя/пароль пользователя клиентскому приложению WCF. Для передачи данных службе WCF используйте привязку, которая поддерживает учетные данные (имя и пароль пользователя), например WSHttpBinding (в конфигурации, wsHttpBinding Element), и установите тип учетных данных клиента на UserName. В службе система безопасности WCF проверяет подлинность пользователя по имени и паролю пользователя и назначает роль, заданную ролью ASP.NET.

ms731049.note(ru-ru,VS.100).gifПримечание
В WCF не предусмотрены какие-либо методы для заполнения базы данных сочетаниями имени/пароля пользователя или другими сведениями о пользователе.

Настройка поставщика участия

  1. В элементе <system.web> файла Web.config создайте элемент <membership>.

  2. В элементе <membership><providers> создайте элемент .

  3. Добавьте элемент <providers> в качестве дочернего к элементу <clear />, чтобы записать коллекцию поставщиков.

  4. В элементе <clear />< создайте элемент add>name со следующими атрибутами, для которых заданы соответствующие значения: type, connectionStringName, applicationName, enablePasswordRetrieval, enablePasswordReset, requiresQuestionAndAnswer, requiresUniqueEmail, passwordFormat и . Атрибут name используется далее в качестве значения в файле конфигурации. В следующем примере ему задается значение SqlMembershipProvider.

    В следующем примере демонстрируется раздел конфигурации.

    <!-- 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>
    

Настройка системы безопасности службы на прием сочетания имя/пароль пользователя.

  1. Добавьте элемент <bindings> в элемент <system.ServiceModel> файла конфигурации.

  2. Добавьте элемент wsHttpBinding Element в раздел привязок. Дополнительные сведения создании элемента привязки WCF, см. Как задать привязку службы в конфигурации.

  3. Задайте для атрибута mode элемента <security>Message значение .

  4. Задайте для атрибута clientCredentialType элемента <message> значение UserName. В этом случае пара «имя пользователя и пароль» будет использоваться в качестве учетной записи клиента.

    В следующем примере показан код конфигурации для привязки.

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

Настройка службы на использование поставщика участия

  1. Добавьте элемент <behaviors> в качестве дочернего для элемента <system.serviceModel>.

  2. Добавьте элемент serviceBehaviors section в элемент <behaviors>.

  3. Добавьте элемент Behavior element и задайте соответствующее значение для атрибута name.

  4. Добавьте элемент <serviceCredentials> Element<behavior в элемент >.

  5. Добавьте элемент userNameAuthentication element в элемент <serviceCredentials>.

  6. Задайте для атрибута userNamePasswordValidationMode значение MembershipProvider.

    ms731049.Important(ru-ru,VS.100).gif Примечание
    Если значение userNamePasswordValidationMode не задано, WCF использует проверку подлинности Windows вместо поставщика участия ASP.NET.

  7. Задайте для атрибута membershipProviderName значение "имя поставщика" (указывается при добавлении поставщика в первой процедуре данного раздела). В следующем примере показан фрагмент <serviceCredentials>, иллюстрирующий вышеуказанные действия.

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

Пример

В следующем коде показана конфигурация службы, использующей функцию членства в 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>

См. также

Задачи

Как использовать поставщик ролей ASP.NET со службой
Поставщик членства и ролей