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

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

Пример приложения см. в разделе "Членство и поставщик ролей". Дополнительные сведения о функции поставщика членства ASP.NET см. в разделе "Практическое руководство. Использование поставщика членства ASP.NET".

Возможность поставщика ролей использует базу данных SQL Server для хранения информации о пользователях. Разработчики Windows Communication Foundation (WCF) могут воспользоваться этими функциями в целях безопасности. При интеграции с приложением WCF пользователи должны предоставить сочетание имени пользователя и пароля клиентскому приложению WCF. Чтобы разрешить WCF использовать базу данных, необходимо создать экземпляр ServiceAuthorizationBehavior класса, задать для него значение свойства PrincipalPermissionMode UseAspNetRolesи добавить экземпляр в коллекцию поведения ServiceHost , в которую размещается служба.

Настройка поставщика ролей

  1. В файле конфигурации Web.config в <system.web> элементе добавьте <roleManager> элемент и задайте для его атрибута trueзначение enabled .

  2. Задайте для атрибута defaultProvider значение SqlRoleProvider.

  3. Добавьте <providers> элемент в качестве дочернего <roleManager> элемента.

  4. В качестве дочернего элемента добавьте <add> элемент со следующими атрибутами, заданными для соответствующих значений: name, typeconnectionStringNameиapplicationName, как показано в следующем примере.<providers>

    <!-- Configure the Sql Role Provider. -->
    <roleManager enabled ="true"
     defaultProvider ="SqlRoleProvider" >
       <providers>
         <add name ="SqlRoleProvider"
           type="System.Web.Security.SqlRoleProvider"
           connectionStringName="SqlConn"
           applicationName="MembershipAndRoleProviderSample"/>
       </providers>
    </roleManager>
    

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

  1. В файле конфигурации Web.config добавьте <элемент system.serviceModel> .

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

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

  4. <Добавьте элемент поведения> и задайте name атрибут соответствующим значением.

  5. <Добавьте службуAuthorization> в <behavior> элемент.

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

  7. Задайте для атрибута roleProviderName значение SqlRoleProvider. В следующем примере показан фрагмент файла конфигурации.

    <behaviors>
     <serviceBehaviors>
      <behavior name="CalculatorServiceBehavior">
       <serviceAuthorization principalPermissionMode ="UseAspNetRoles"
                             roleProviderName ="SqlRoleProvider" />
      </behavior>
     </serviceBehaviors>
    </behaviors>
    

См. также