Condividi tramite


Estensione di esempio per la protezione

Data aggiornamento: 5 dicembre 2005

L'estensione di esempio per la protezione utilizza l'autenticazione basata su form con SQL Server per fornire un modello di protezione personalizzato compatibile con Reporting Services. Questo esempio non è supportato nei sistemi operativi basati su processori Itanium.

Gli esempi di SQL Server non vengono installati automaticamente durante l'installazione. Per informazioni sulle procedure di installazione degli esempi, vedere Installazione degli esempi.

ms160724.security(it-it,SQL.90).gifNota sulla protezione:
L'estensione di esempio per la protezione non deve essere distribuito e testato in un ambiente di produzione. Non è consigliabile ripristinare l'autenticazione di Windows dopo aver eseguito la migrazione a un'estensione di protezione diversa. In caso contrario, potrebbero verificarsi errori quando si tenta di accedere a elementi nel database del server di report a cui sono associati descrittori di protezione personalizzati, ma non descrittori di protezione dell'autenticazione di Windows. Per eseguire il ripristino, è necessario reinstallare Reporting Services e riapplicare manualmente la protezione basata sui ruoli per gli utenti di Windows. Prima di utilizzare questo esempio, eseguire il backup dei file di configurazione.
ms160724.note(it-it,SQL.90).gifImportante:
Gli esempi vengono offerti esclusivamente a scopo didattico. Non sono progettati per l'utilizzo in un ambiente di produzione e non sono stati testati in un ambiente di produzione. Microsoft non fornisce servizi di supporto tecnico per questi esempi. Le applicazioni e gli assembly di esempio non devono essere connessi o utilizzati con il database di SQL Server o il server di report in un ambiente di produzione senza l'autorizzazione dell'amministratore di sistema.

Requisiti

Per utilizzare l'esempio CustomSecurity, è necessario avere familiarità con Visual Studio e Visual C# o Visual Basic e devono essere installate le applicazioni seguenti:

  • Microsoft Visual Studio 2005 o ambiente di sviluppo compatibile (per la visualizzazione dei file di progetto).
  • Microsoft .NET Framework versione 2.0.
  • SQL Server 2005 con Reporting Services.
  • Esempi di Reporting Services.
  • Un server di report per cui si dispone di autorizzazioni di accesso in rete, se si intende utilizzare l'estensione di esempio per aggiungere ulteriori funzionalità di elaborazione dati al server.

Percorso

L'esempio è disponibile per impostazione predefinita nella sottodirectory Extension Samples\FormsAuthentication Sample della directory degli esempi di Reporting Services.

C:\Program Files\Microsoft SQL Server\90\Samples\Reporting Services\Extension Samples\FormsAuthentication Sample

Generazione dell'esempio

È necessario innanzitutto compilare e installare l'estensione. Nella procedura si presuppone che Reporting Services sia installato nel percorso predefinito C:\Programmi\Microsoft SQL Server\MSSQL.3\Reporting Services. Nella parte restante dell'argomento si fa riferimento a questo percorso utilizzando la parola <install>.

Se non è stato ancora creato un file di chiave con nome sicuro, generare il file di chiave seguendo le istruzioni seguenti.

Per generare un file di chiave con nome sicuro

  1. Aprire il prompt dei comandi di Microsoft Visual Studio 2005. Fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft .NET Framework SDK 2.0, quindi SDK Command Prompt.

    -- oppure --

    Aprire il prompt dei comandi di Microsoft .NET Framework. Fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft .NET Framework SDK 2.0, quindi SDK Command Prompt.

  2. Utilizzare il comando CD (change directory) per passare dalla directory corrente della finestra del prompt dei comandi alla cartella in cui sono stati installati gli esempi.

    [!NOTA] Per determinare la cartella in cui si trovano gli esempi, fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft SQL Server 2005, Documentazione ed esercitazioni, quindi Samples. Se è stato utilizzato il percorso di installazione predefinito, gli esempi si troveranno in <unità_sistema>:\Programmi\Microsoft SQL Server\100\Samples.

  3. Al prompt dei comandi digitare il comando seguente per generare il file di chiave:

    sn -k SampleKey.snk

    ms160724.note(it-it,SQL.90).gifImportante:
    Per ulteriori informazioni sulla coppia di chiavi con nome sicuro, vedere l'argomento relativo ai nomi sicuri e alla protezione in .NET Framework nel centro per sviluppatori di .NET su MSDN.

Per compilare l'esempio mediante Visual Studio 2005

  1. Aprire CustomSecurity.sln in Microsoft Visual Studio 2005. Se l'esempio è stato installato nel percorso predefinito, questo file è disponibile in C:\Programmi\Microsoft SQL Server\MSSQL\Reporting Services\Samples\Extensions.

  2. In Esplora soluzioni selezionare il progetto CustomSecurity.

  3. Scegliere Aggiungi riferimento dal menu Progetto.

    Verrà visualizzata la finestra di dialogo Aggiungi riferimento.

  4. Fare clic sulla scheda .NET.

  5. Fare clic su Sfoglia e individuare Microsoft.ReportingServices.Interfaces nell'unità locale. Per impostazione predefinita, l'assembly è disponibile nella directory <install>\ReportServer\bin. Fare clic su OK.

    Il riferimento selezionato verrà aggiunto al progetto.

  6. Scegliere Genera CustomSecurity dal menu Genera.

Distribuzione dell'esempio

Dopo aver compilato l'esempio, è necessario copiare le DLL e le pagine ASPX nelle sottodirectory appropriate dell'installazione di Report Server.

Per distribuire l'esempio

  1. Copiare Microsoft.Samples.ReportingServices.CustomSecurity.dll e Microsoft.Samples.ReportingServices.CustomSecurity.pdb nella directory <install>\ReportServer\bin.

  2. Copiare Microsoft.Samples.ReportingServices.CustomSecurity.dll e Microsoft.Samples.ReportingServices.CustomSecurity.pdb nella directory <install>\ReportManager\bin.

  3. Copiare la pagina Logon.aspx nella directory <install>\ReportServer e la pagina UILogon.aspx nella directory <install>\ReportManager\Pages.

Dopo aver copiato l'assembly e le pagine di accesso sul server, è necessario apportare alcune modifiche ai file di configurazione di Server report e Gestione report.

ms160724.note(it-it,SQL.90).gifImportante:
Prima di apportare le modifiche, eseguire il backup di tutti i file di configurazione.

Per modificare il file RSReportServer.config

  1. Aprire il file RSReportServer.config in Visual Studio 2005 o in un editor di testo come il Blocco note. RSReportServer.config è incluso nella directory <install>\ReportServer.

  2. Individuare gli elementi <Security> e <Authentication> e modificare le impostazioni come indicato di seguito:

    <Security>
       <Extension Name="Forms" 
    Type="Microsoft.Samples.ReportingServices.CustomSecurity.Authorization, 
    Microsoft.Samples.ReportingServices.CustomSecurity" >
          <Configuration>
             <AdminConfiguration>
                <UserName>username</UserName>
             </AdminConfiguration>
          </Configuration>
       </Extension>
    </Security>
    <Authentication>
       <Extension Name="Forms" 
    Type="Microsoft.Samples.ReportingServices.CustomSecurity.AuthenticationExtension,
     Microsoft.Samples.ReportingServices.CustomSecurity" />
    </Authentication>
    

    Per ulteriori informazioni sulla protezione .NET Framework e su Reporting Services, vedere Understanding Code Access Security in Reporting Services.

Per modificare il file RSWebApplication.config

  1. Aprire il file di configurazione di Gestione report, RSWebApplication.config, incluso nella directory <install>\ReportManager.

  2. Individuare l'elemento <UI> e aggiornarlo come indicato di seguito:

    <UI>
       <CustomAuthenticationUI>
          <loginUrl>/Pages/UILogon.aspx</loginUrl>
             <UseSSL>True</UseSSL>
       </CustomAuthenticationUI>
       <ReportServerUrl>http://<server>/ReportServer</ReportServerUrl>
    </UI>
    

[!NOTA] Se si esegue l'estensione di esempio per la protezione in un ambiente di sviluppo in cui non è installato un certificato SSL (Secure Sockets Layer), è necessario modificare il valore dell'elemento <UseSSL> su False nella voce di configurazione precedente. È consigliabile utilizzare sempre SSL quando si utilizza l'autenticazione basata su form con Reporting Services.

È necessario aggiungere un gruppo di codice per l'estensione di protezione personalizzata che concede l'autorizzazione FullTrust all'estensione. A tale scopo, aggiungere il codice di gruppo al file rssrvpolicy.config.

Per modificare il file RSSrvPolicy.config

  1. Aprire il file rssrvpolicy.config incluso nella directory <install>\ReportServer.

  2. Individuare il gruppo di codice esistente nel file dei criteri di protezione con appartenenza URL $CodeGen, come indicato di seguito, e quindi aggiungere una voce a rssrvpolicy.config, come segue

    [!NOTA] Se è installato Analysis Services, sarà necessario modificare Url="C:\Program Files\Microsoft SQL Server</CODE>MSSQL.2\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.CustomSecurity.dll in MSSQL.3.

    <CodeGroup
       class="UnionCodeGroup"
       version="1"
       PermissionSetName="FullTrust">
       <IMembershipCondition 
          class="UrlMembershipCondition"
          version="1"
          Url="$CodeGen$/*"
       />
    </CodeGroup>
    <CodeGroup
       class="UnionCodeGroup"
       version="1"
       Name="SecurityExtensionCodeGroup"
       Description="Code group for the sample security extension"
       PermissionSetName="FullTrust">
       <IMembershipCondition 
          class="UrlMembershipCondition"
          version="1"
          Url="C:\Program Files\Microsoft SQL Server\MSSQL.2\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.CustomSecurity.dll"
       />
    </CodeGroup>
    

[!NOTA] Per ragioni di semplicità, l'esempio di autenticazione basata su form ha un nome vulnerabile e richiede una voce di appartenenza URL semplice nei file dei criteri di protezione. Nell'implementazione dell'estensione di protezione di produzione è necessario creare assembly con nome sicuro e utilizzare la condizione di appartenenza con nome sicuro quando si aggiungono criteri di protezione per l'assembly. Per ulteriori informazioni sugli assembly con nome sicuro, vedere l'argomento relativo alla creazione e all'utilizzo di assembly con nome sicuro in MSDN.

È quindi necessario ampliare le autorizzazioni per il gruppo di codice "My Computer" nel file dei criteri di Gestione report.

Per modificare il file RSMgrPolicy.config

  1. Aprire il file dei criteri di Gestione report, rsmgrpolicy.config, incluso nella directory <install>\ReportManager.

  2. Individuare il codice di gruppo seguente in rsmgrpolicy.config e modificare l'attributo PermissionSetName da Execution a FullTrust come indicato di seguito:

    <CodeGroup 
            class="FirstMatchCodeGroup" 
            version="1" 
            PermissionSetName="FullTrust"
            Description="This code group grants MyComputer code Execution 
    permission. ">
        <IMembershipCondition 
                class="ZoneMembershipCondition"
                version="1"
                Zone="MyComputer" />
    

Per utilizzare l'autenticazione basata su form, è necessario modificare i file Web.config per Gestione report e Server report per modificare la modalità di autenticazione e disattivare la rappresentazione.

Per modificare il file Web.config per Server report

  1. Aprire il file Web.config in un editor di testo. Per impostazione predefinita, il file è disponibile nella directory <install>\ReportServer.

  2. Individuare l'elemento <identity> e impostare l'attributo Impersonate su false.

    <identity impersonate="false" />
    
  3. Individuare l'elemento <authentication> e modificare l'attributo Mode in Forms.

  4. Aggiungere l'elemento seguente <forms> come figlio dell'elemento <authentication> e impostare gli attributi loginUrl, name, timeout e path come indicato di seguito:

    <authentication mode="Forms">
       <forms loginUrl="logon.aspx" name="sqlAuthCookie" timeout="60" 
                   path="/"></forms>
       </authentication>
    
  5. Aggiungere l'elemento <authorization> seguente direttamente dopo l'elemento <authentication>.

    <authorization> 
       <deny users="?" />
    </authorization>
    

    In questo modo agli utenti non autenticati verrà negato l'accesso al server di report. L'attributo loginUrl impostato in precedenza per l'elemento <authentication> reindirizzerà le richieste non autenticate alla pagina Logon.aspx.

Per modificare il file Web.config per Gestione report

  1. Aprire Web.config per Gestione report. Il file è incluso nella directory <install>\ReportManager.

  2. Disattivare la rappresentazione individuando la sezione <identity impersonate= "true" /> e modificandola in <identity impersonate="false" />.

Configurazione dell'autenticazione anonima

Per impostazione predefinita, il gruppo di utenti di Windows Guests include l'account IUSR_computername che viene inizialmente utilizzato per l'accesso locale e la visualizzazione della pagina Logon.aspx. Per garantire il supporto dell'autenticazione basata su form, è necessario attivare l'accesso anonimo per la directory virtuale ReportServer. Per impostazione predefinita, l'accesso anonimo è disattivato.

Per attivare l'autenticazione anonima

  1. In Internet Information Services selezionare la directory virtuale ReportServer, inclusa in genere nel sito Web predefinito, e aprire la finestra di dialogo Proprietà corrispondente.

  2. Fare clic sulla scheda Protezione directory.

  3. In Controllo autenticazione e accesso anonimo fare clic su Modifica.

    Verrà visualizzata la finestra di dialogo Metodi di autenticazione.

  4. Selezionare la casella di controllo Accesso anonimo.

  5. Fare clic su OK.

    Ripetere questi passaggi per la directory virtuale Reports.

Creazione del database UserAccounts

L'esempio include uno script di database, createuserstore.sql, che consente di configurare un archivio utente per l'esempio Forms in un database di SQL Server.

Per creare il database UserAccounts

  1. Aprire SQL Server Management Studio e connettersi all'istanza locale di SQL Server.

  2. Individuare il file script SQL createuserstore.sql. Il file script si trova all'interno dei file di progetto di esempio.

  3. Individuare "LocalMachine" verso la fine dello script e sostituirlo con il nome del computer in uso. Gli utenti di Windows 2003 devono sostituire LocalMachine\ASPNET con NT AUTHORITY\NETWORK SERVICE (se non sono in modalità compatibilità con IIS 5).

  4. Eseguire la query per creare il database UserAccounts.

  5. Chiudere SQL Server Management Studio.

Test dell'esempio

Eseguire la procedura seguente per eseguire il test dell'estensione di esempio. È necessario registrare un utente amministratore, che aggiunge il nome utente, l'hash della password e il valore salt alla tabella users del database UserAccounts. È inoltre necessario specificare tale nome utente nel file di configurazione di Server report. Eseguire quindi l'accesso con lo stesso utente per verificare il corretto funzionamento delle routine di verifica della password nonché il caricamento corretto dell'assembly dell'estensione da parte del server di report.

Per creare il progetto report

  1. Riavviare IIS eseguendo Iisreset.exe al prompt dei comandi.

  2. Aprire Gestione report. A tale scopo, utilizzare il menu di programma di Reporting Services oppure accedere alla directory virtuale Reports tramite il browser.

  3. Specificare nome utente e password e quindi fare clic su Register User per aggiungere l'utente al database accounts.

  4. Aprire il file RSReportServer.config. Individuare l'elemento <Security> e aggiungere il nome utente registrato in precedenza, come indicato di seguito:

    <Security>
       <Extension Name="Forms" 
    Type="Microsoft.Samples.ReportingServices.CustomSecurity.Authorization, 
    Microsoft.Samples.ReportingServices.CustomSecurity" >
          <Configuration>
             <AdminConfiguration>
                <UserName>username</UserName>
             </AdminConfiguration>
          </Configuration>
       </Extension>
    </Security>
    
  5. Ritornare alla pagina UILogon.aspx, immettere di nuovo il nome utente e la password e quindi fare clic su Logon.

È necessario disporre dell'accesso senza restrizioni a Gestione report e al server di report. L'utente amministratore creato dispone sul server di report di autorizzazioni equivalenti a quelle di cui dispone un account amministratore predefinito sul computer locale. Ai fini di questo esempio, è possibile disporre di un solo utente designato come amministratore. Dopo aver creato un account amministratore predefinito, è possibile registrare altri utenti e assegnare loro ruoli sul server di report.

[!NOTA] L'utente amministratore deve essere aggiunto ai ruoli ufficiali Amministratore sistema e Gestione contenuto (cartella principale) del server di report. In questo modo non ci sono descrittori di protezione vuoti nel database del server di report. Per ulteriori informazioni sui ruoli Amministratore sistema e Gestione contenuto, vedere Panoramica dei ruoli predefiniti

Utilizzo del servizio Web con la protezione personalizzata

È possibile utilizzare l'API del servizio Web con l'autenticazione basata su form in modo analogo all'utilizzo con l'autenticazione di Windows. È tuttavia necessario chiamare LogonUser nel codice del servizio Web e passare le credenziali dell'utente corrente. Il client del servizio Web non potrà inoltre usufruire del vantaggio offerto dalla gestione automatica dei cookie, che è garantita da Internet Explorer e altri browser. È necessario estendere la classe proxy Microsoft.ReportingServices per includere la gestione dei cookie. A tale scopo, ignorare i metodi GetWebRequest e GetWebResponse della classe del servizio Web.

Debug dell'estensione di esempio

L'esecuzione dell'estensione di esempio nel debugger non solo consente di risolvere eventuali problemi, ma è la soluzione ideale per esaminare il codice istruzione per istruzione e assistere in tempo reale all'autenticazione del server di report e al processo di autorizzazione.

In Microsoft .NET Framework sono disponibili diversi strumenti di debug che consentono di analizzare il codice di esempio. Nella procedura seguente viene utilizzato Visual Studio 2005 per eseguire il debug dell'esempio precedente.

Per eseguire il debug del codice di esempio dell'autenticazione basata su form

  1. Avviare Visual Studio e aprire il file CustomSecurity.sln nel server di report di prova.

  2. Aprire Internet Explorer e passare a Gestione report lasciando il codice di esempio aperto in Visual Studio.

  3. Tornare a Visual Studio e impostare alcuni punti di interruzione nel codice del progetto dell'estensione per la protezione personalizzata.

  4. Con il progetto dell'estensione nella finestra attiva scegliere Connetti a processo dal menu Debug.

    Verrà visualizzata la finestra di dialogo Connetti a processo.

  5. Nell'elenco dei processi selezionare Aspnet_wp.exe (o W3wp.exe, se l'applicazione è distribuita in IIS 6.0) e fare clic su Connetti.

  6. Nella finestra di dialogo Connetti a processo selezionare il tipo di programma Common Language Runtime e quindi fare clic su OK. Per ottenere le massime prestazioni durante il debug verificare che Nativo non sia selezionato come tipo di programma.

  7. Durante l'esecuzione dell'esempio viene visualizzato un form di accesso. Immettere le credenziali utente nel form e fare clic su Logon.

    Quando durante l'elaborazione vengono raggiunti i punti di interruzione, il debugger interrompe l'esecuzione in corrispondenza di tali punti.

  8. Esaminare il codice istruzione per istruzione premendo F11. Per ulteriori informazioni sull'utilizzo di Visual Studio per il debug, vedere la documentazione di Visual Studio 2005.

[!NOTA] L'esecuzione del debug comporta un utilizzo elevato delle risorse e del processore. Se si verificano problemi, chiudere Visual Studio, ripristinare IIS e iniziare di nuovo connettendo la soluzione CustomSecurity al processo di lavoro ASP.NET e accedendo a Gestione report.

Rimozione dell'estensione di esempio

È possibile ripristinare l'autenticazione di Windows dopo aver utilizzato l'esempio. Questa operazione non è tuttavia consigliabile.

Per ripristinare la protezione di Windows

  1. Ripristinare i file seguenti dalle copie di backup: Web.config, RSReportServer.config e RSWebApplication.config. In questo modo, i metodi di autenticazione e autorizzazione per il server di report vengono impostati sulla protezione di Windows predefinita. Vengono inoltre rimosse le voci specificate per l'estensione nei file di configurazione di Server report e Gestione report.

  2. Disattivare l'accesso anonimo in Internet Information Services (IIS) per la directory virtuale del server di report.

Dopo la rimozione delle informazioni di configurazione, l'estensione di protezione non è più disponibile per il server di report. Non dovrebbe essere necessario rimuovere i descrittori di protezione creati durante l'esecuzione del server di report nell'estensione di esempio per la protezione. Il server di report assegna automaticamente il ruolo Amministratore sistema al gruppo BUILTIN\Administrators sul computer che ospita il server di report quando l'autenticazione di Windows è attivata. È tuttavia necessario riapplicare manualmente la protezione basata sui ruoli per gli utenti di Windows.

Si noti che il ripristino dell'autenticazione di Windows dopo aver eseguito la migrazione a un'estensione di protezione diversa non è in genere consigliabile. Se si esegue il ripristino, potrebbero verificarsi errori quando si tenta di accedere a elementi nel database del server di report a cui sono associati descrittori di protezione personalizzati, ma non descrittori di protezione dell'autenticazione di Windows.

Vedere anche

Attività

Esempi di SQL Server Reporting Services

Altre risorse

Estensioni di esempio (Reporting Services)
Implementing a Security Extension

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

5 dicembre 2005

Contenuto modificato:
  • Modifica delle istruzioni per la generazione di un file di chiave, inclusi il nome e il percorso del file di chiave.