Procedura: usare il provider di ruoli ASP.NET con un servizio

Il provider di ruoli ASP.NET (insieme al provider di appartenenza ASP.NET) è una funzionalità grazie alla quale gli sviluppatori ASP.NET sono in grado di creare siti Web che consentono agli utenti di creare un account in un sito e di acquisire ruoli a scopo di autorizzazione. Con questa funzionalità qualsiasi utente può stabilire un account nel sito e accedere in modo esclusivo al sito e ai relativi servizi. Si tratta di una funzionalità in contrasto con la protezione di Windows, in base alla quale è necessario che gli utenti dispongano di un account in un dominio Windows. Qualsiasi utente che fornisca le credenziali (ovvero nome utente e password) può usare il sito e i relativi servizi.

Per un'applicazione di esempio, vedere Appartenenza e provider di ruoli. Per altre informazioni sulla funzionalità del provider di appartenenze ASP.NET, vedere Procedura: Usare il provider di appartenenze ASP.NET.

La funzionalità del provider di ruoli utilizza un database SQL Server per archiviare informazioni utente. Gli sviluppatori di Windows Communication Foundation (WCF) possono sfruttare queste funzionalità a scopo di sicurezza. Se integrato in un'applicazione WCF, gli utenti devono fornire una combinazione di nome utente/password all'applicazione client WCF. Per attivare l'uso del database in WCF, è necessario creare un'istanza della classe ServiceAuthorizationBehavior, impostare la proprietà PrincipalPermissionMode su UseAspNetRoles e aggiungere l'istanza alla raccolta dei comportamenti nella classe ServiceHost in cui risiede il servizio.

Configurare il provider di ruoli

  1. Nel file Web.config, sotto l'elemento <system.web>, aggiungere un elemento <roleManager> e impostarne l'attributo enabled su true.

  2. Impostare l'attributo defaultProvider su SqlRoleProvider.

  3. Come elemento figlio all'elemento <roleManager>, aggiungere un elemento <providers>.

  4. Come elemento figlio dell'elemento <providers>, aggiungere un elemento <add> con gli attributi seguenti impostati sui valori appropriati: name, type, connectionStringName e applicationName, come illustrato nell'esempio seguente.

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

Configurare il servizio per l'uso del provider di ruoli

  1. Nel file Web.config aggiungere un elemento <system.serviceModel>.

  2. Aggiungere un elemento <behaviors> all'elemento <system.ServiceModel>.

  3. Aggiungere un oggetto <serviceBehaviors> all'elemento <behaviors>.

  4. Aggiungere un elemento <behavior> e impostare l'attributo name su un valore appropriato.

  5. Aggiungere un elemento <serviceAuthorization> all'elemento <behavior>.

  6. Impostare l'attributo principalPermissionMode su UseAspNetRoles.

  7. Impostare l'attributo roleProviderName su SqlRoleProvider. Nell'esempio seguente viene illustrata una parte della configurazione.

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

Vedi anche