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

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

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

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

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

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

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

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

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

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

См. также