Instrukcje: Użycie dostawcy członkostwa platformy ASP.NET

Dostawca członkostwa ASP.NET to funkcja umożliwiająca deweloperom ASP.NET tworzenie witryn sieci Web, które umożliwiają użytkownikom tworzenie unikatowych kombinacji nazw użytkowników i haseł. W ramach tej funkcji każdy użytkownik może ustanowić konto z witryną i zalogować się w celu uzyskania wyłącznego dostępu do witryny i jej usług. Jest to w przeciwieństwie do zabezpieczeń systemu Windows, co wymaga od użytkowników posiadania kont w domenie systemu Windows. Zamiast tego każdy użytkownik dostarczający swoje poświadczenia (kombinacja nazwy użytkownika/hasła) może korzystać z witryny i jej usług.

Aby zapoznać się z przykładową aplikacją, zobacz Członkostwo i dostawca ról. Aby uzyskać informacje na temat korzystania z funkcji dostawcy ról ASP.NET, zobacz Instrukcje: używanie dostawcy ról ASP.NET z usługą.

Funkcja członkostwa wymaga użycia bazy danych programu SQL Server do przechowywania informacji o użytkowniku. Funkcja zawiera również metody monitowania z pytaniem wszystkich użytkowników, którzy zapomnieli swoje hasło.

Deweloperzy programu Windows Communication Foundation (WCF) mogą korzystać z tych funkcji w celach bezpieczeństwa. Po zintegrowaniu z aplikacją WCF użytkownicy muszą podać kombinację nazwy użytkownika/hasła do aplikacji klienckiej WCF. Aby przenieść dane do usługi WCF, użyj powiązania, które obsługuje poświadczenia nazwy użytkownika/hasła, takie jak WSHttpBinding (w konfiguracji, <wsHttpBinding>) i ustaw typ poświadczeń klienta na UserName. W usłudze zabezpieczenia WCF uwierzytelniają użytkownika na podstawie nazwy użytkownika i hasła, a także przypisuje rolę określoną przez rolę ASP.NET.

Uwaga

Program WCF nie udostępnia metod wypełniania bazy danych kombinacjami nazwy użytkownika/hasła ani innych informacji o użytkowniku.

Aby skonfigurować dostawcę członkostwa

  1. W pliku Web.config w obszarze <system.web> elementu utwórz <membership> element.

  2. W obszarze <membership> elementu utwórz <providers> element.

  3. Jako element podrzędny do <providers> elementu dodaj <clear /> element, aby opróżnić kolekcję dostawców.

  4. W obszarze <clear /> elementu utwórzadd><element z następującymi atrybutami ustawionymi na odpowiednie wartości: name, , connectionStringNameapplicationNametypeenablePasswordResetrequiresQuestionAndAnswerenablePasswordRetrieval, requiresUniqueEmail, i .passwordFormat Atrybut name jest używany później jako wartość w pliku konfiguracji. Poniższy przykład ustawia go na SqlMembershipProviderwartość .

    W poniższym przykładzie przedstawiono sekcję konfiguracji.

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

Aby skonfigurować zabezpieczenia usługi tak, aby akceptowały kombinację nazwy użytkownika/hasła

  1. W pliku konfiguracji w obszarze elementu system.serviceModel> dodaj <element bindings>.<

  2. Dodaj element <wsHttpBinding> do sekcji powiązań. Aby uzyskać więcej informacji na temat tworzenia elementu powiązania WCF, zobacz How to: Specify a Service Binding in Configuration (Instrukcje: określanie powiązania usługi w konfiguracji).

  3. Ustaw atrybut mode elementu <security> na Message.

  4. Ustaw atrybut clientCredentialType elementu <message> na UserName. Określa to, że nazwa użytkownika/para haseł będzie używana jako poświadczenia klienta.

    W poniższym przykładzie pokazano kod konfiguracji powiązania.

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

Aby skonfigurować usługę do korzystania z dostawcy członkostwa

  1. Jako element podrzędny do <system.serviceModel> elementu dodaj <element behaviors>

  2. Dodaj element serviceBehaviors>.<behaviors><

  3. <Dodaj zachowanie> i ustaw name atrybut na odpowiednią wartość.

  4. Dodaj element serviceCredentials>behavior<>.<

  5. Dodaj element <userNameAuthentication> do <serviceCredentials> elementu .

  6. userNamePasswordValidationMode Ustaw atrybut na MembershipProvider.

    Ważne

    Jeśli wartość nie jest ustawiona userNamePasswordValidationMode , program WCF używa uwierzytelniania systemu Windows zamiast dostawcy członkostwa ASP.NET.

  7. membershipProviderName Ustaw atrybut na nazwę dostawcy (określony podczas dodawania dostawcy w pierwszej procedurze w tym temacie). W poniższym przykładzie pokazano <serviceCredentials> fragment do tego punktu.

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

Przykład

Poniższy kod przedstawia konfigurację usługi korzystającej z funkcji członkostwa platformy ASP.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="MyServiceBehavior" name="Microsoft.Samples.GettingStarted.CalculatorService">
        <endpoint address="http://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>

Zobacz też