Sdílet prostřednictvím


Postupy: Používání poskytovatele členství ASP.NET

Poskytovatel členství ASP.NET je funkce, která vývojářům ASP.NET umožňuje vytvářet weby, které uživatelům umožňují vytvářet jedinečné kombinace uživatelských jmen a hesel. Díky tomuto zařízení může každý uživatel vytvořit účet s webem a přihlásit se k výhradnímu přístupu k webu a jeho službám. To je na rozdíl od zabezpečení Windows, které vyžaduje, aby uživatelé měli účty v doméně Windows. Místo toho může každý uživatel, který zadá své přihlašovací údaje (kombinaci uživatelského jména a hesla), použít web a jeho služby.

Ukázkovou aplikaci najdete v tématu Členství a Zprostředkovatel rolí. Informace o použití funkce ASP.NET zprostředkovatele role naleznete v tématu Postupy: Použití poskytovatele role ASP.NET se službou.

Funkce členství vyžaduje použití databáze SQL Serveru k uložení informací o uživateli. Tato funkce také obsahuje metody výzvy k zadání otázky všem uživatelům, kteří zapomněli heslo.

Vývojáři windows Communication Foundation (WCF) můžou tyto funkce využívat pro účely zabezpečení. Při integraci do aplikace WCF musí uživatelé zadat kombinaci uživatelského jména a hesla klientské aplikaci WCF. Pokud chcete přenést data do služby WCF, použijte vazbu, která podporuje přihlašovací údaje uživatelského jména a hesla, jako WSHttpBinding je například (v konfiguraci, <wsHttpBinding>) a nastavte typ přihlašovacích údajů klienta na UserName. Zabezpečení WCF ve službě ověřuje uživatele na základě uživatelského jména a hesla a také přiřadí roli určenou rolí ASP.NET.

Poznámka:

WCF neposkytuje metody pro naplnění databáze kombinacemi uživatelského jména a hesla ani jinými informacemi o uživateli.

Konfigurace zprostředkovatele členství

  1. V souboru Web.config pod <system.web> elementem <membership> vytvořte element.

  2. Pod elementem <membership> <providers> vytvořte prvek.

  3. Jako podřízený prvek <providers> přidejte <clear /> prvek, který vyprázdní kolekci zprostředkovatelů.

  4. Pod elementem vytvořte prvek s následujícími atributy nastavenými na odpovídající hodnoty: name, type, , applicationNameconnectionStringName, enablePasswordRetrieval, enablePasswordReset, , requiresUniqueEmailrequiresQuestionAndAnswera passwordFormat.<add> <clear /> Atribut name se použije později jako hodnota v konfiguračním souboru. Následující příklad jej nastaví na SqlMembershipProvider.

    Následující příklad ukazuje oddíl konfigurace.

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

Konfigurace zabezpečení služby tak, aby přijímala kombinaci uživatelského jména a hesla

  1. V konfiguračním souboru v části system.serviceModel> element přidejte< element bindings>.<

  2. Přidejte wsHttpBinding ><do oddílu vazeb. Další informace o vytvoření elementu vazby WCF naleznete v tématu Postupy: Určení vazby služby v konfiguraci.

  3. mode Nastavte atribut <security> prvku na Message.

  4. clientCredentialType Nastavte atribut <message> prvku na UserName. Určuje, že se jako přihlašovací údaje klienta použije pár uživatelského jména a hesla.

    Následující příklad ukazuje konfigurační kód pro vazbu.

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

Konfigurace služby pro použití zprostředkovatele členství

  1. Jako podřízený prvek <system.serviceModel> přidejte <element behaviors> .

  2. Přidejte do elementu <<behaviors> serviceBehaviors.>

  3. <Přidejte chování> a nastavte name atribut na odpovídající hodnotu.

  4. Přidejte do elementu <<behavior> serviceCredentials.>

  5. Přidejte do elementu <<serviceCredentials> userNameAuthentication.>

  6. Nastavte atribut na userNamePasswordValidationMode MembershipProvider.

    Důležité

    Pokud hodnota userNamePasswordValidationMode není nastavená, WCF místo zprostředkovatele členství ASP.NET používá ověřování systému Windows.

  7. membershipProviderName Nastavte atribut na název zprostředkovatele (zadaný při přidání zprostředkovatele v prvním postupu v tomto tématu). Následující příklad ukazuje <serviceCredentials> fragment tohoto bodu.

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

Příklad

Následující kód ukazuje konfiguraci pro službu, která používá funkci členství v 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>

Viz také