Come installare estensioni di sicurezza personalizzateHow to install custom security extensions

QUESTO ARGOMENTO SI APPLICA A:THIS TOPIC APPLIES TO: sìSQL Server Reporting Services (2016 e successive)SQL Server Reporting Services (2016 and later) sìServer di report di Power BIPower BI Report Server sìSQL Server Reporting Services (2016 e successive)SQL Server Reporting Services (2016 and later) sìServer di report di Power BIPower BI Report Server

Reporting Services 2016 ha introdotto un nuovo portale Web per ospitare le nuove API Odata e i nuovi carichi di lavoro dei report, ad esempio report per dispositivi mobili e indicatori KPI.Reporting Services 2016 introduced a new web portal in order to host new Odata APIs and also host new report workloads such as mobile reports and KPIS. Questo nuovo portale si basa su tecnologie più recenti e viene isolato da ReportingServicesService mediante l'esecuzione in un processo separato.This new portal relies on newer technologies and is isolated from the familiar ReportingServicesService by running in a separate process. Questo processo non è un'applicazione ASP.NET ospitata e interrompe i presupposti delle estensioni di sicurezza personalizzate esistenti.This process is not an ASP.NET hosted application and as such breaks assumptions from existing custom security extensions. Inoltre, le interfacce correnti delle estensioni di sicurezza personalizzate non consentono il passaggio di contesti esterni, lasciando ai responsabili dell'implementazione l'unica scelta di controllare gli oggetti ASP.NET globale noti richiedendo alcune modifiche all'interfaccia.Moreover, the current interfaces for custom security extensions don't allow for any external context to be passed-in, leaving implementers with the only choice to inspect well-known global ASP.NET Objects, this required some changes to the interface.

Che cosa è cambiato?What Changed?

È stata introdotta una nuova interfaccia che può essere implementata e che offre un IRSRequestContext con le proprietà più comuni usate dalle estensioni per prendere decisioni relative all'autenticazione.A new interface was introduced that can be implemented which provides an IRSRequestContext providing the more common properties used by extensions to make decisions related to authentication.

Nelle versioni precedenti Gestione report rappresentava il front-end e poteva essere configurato con la propria pagina di accesso personalizzata.In previous versions, Report Manager was the front-end and could be configured with its own custom login page. In Reporting Services 2016 è supportata una sola pagina ospitata da ReportServer che deve eseguire l'autenticazione in entrambe le applicazioni.In Reporting Services 2016, only one page hosted by reportserver is supported and should authenticate to both applications.

ImplementazioneImplementation

Nelle versioni precedenti le estensioni potevano avvalersi del presupposto comune che gli oggetti ASP.NET sarebbero stati immediatamente disponibili.In previous versions, extensions could rely on a common assumption that ASP.NET objects would be readily available. Poiché il nuovo portale non viene eseguito in ASP.NET, l'estensione potrebbe riscontrare problemi con gli oggetti NULL.Since the new portal does not run in ASP.NET, the extension might hit issues with objects being NULL.

Nella maggior parte dei casi si accede a HttpContext.Current per leggere le informazioni della richiesta, ad esempio le intestazioni e i cookie.The most generic example is accessing HttpContext.Current to read request information such as headers and cookies. Per consentire alle estensioni di prendere le stesse decisioni è stato introdotto un nuovo metodo nell'estensione che offre le informazioni della richiesta e viene chiamato durante l'autenticazione dal portale.In order to allow extensions to make the same decisions we introduced a new method in the extension that provides request information and is called when authenticating from the portal.

Per usare il nuovo metodo è necessario che le estensioni implementino l'interfaccia IAuthenticationExtension2.Extensions have to implement the IAuthenticationExtension2 interface in order to leverage this. Le estensioni dovranno implementare entrambe le versioni del metodo GetUserInfo che viene chiamato dal contesto di ReportServer e usato nel processo del webhost.The extensions will need to implement both versions of GetUserInfo method, as is called by the reportserver context and other used in webhost process. Nell'esempio seguente è illustrata una delle implementazioni semplici del portale in cui l'identità risolta da ReportServer corrisponde a quella usata.The sample below shows one of the simple implementations for the portal where the identity resolved by the reportserver is the one used.

public void GetUserInfo(IRSRequestContext requestContext, out IIdentity userIdentity, out IntPtr userId)
{
    userIdentity = null;
    if (requestContext.User != null)
    {
        userIdentity = requestContext.User;
    }

    // initialize a pointer to the current user id to zero
    userId = IntPtr.Zero;
}

Distribuzione e configurazioneDeployment and Configuration

Le configurazioni di base necessarie per l'estensione di sicurezza personalizzata corrispondono a quelle delle versioni precedenti.The basic configurations needed for custom security extension are the same as previous releases. È necessario apportare modifiche per web.config e rsreportserver.config: Per altre informazioni, vedere Configurare l'autenticazione personalizzata o basata su form nel server di report.Changes are needed for web.config and rsreportserver.config: For more information, see Configure Custom or Forms Authentication on the Report Server.

Non è più disponibile un web.config separato per Gestione report. Il portale eredita le stesse impostazioni dell'endpoint di ReportServer.There is no longer a separate web.config for the Report Manager, the portal will inherit the same settings as the reportserver endpoint.

Chiavi computerMachine Keys

Per l'autenticazione basata su form che richiede la decrittografia del cookie di autenticazione, è necessario configurare entrambi i processi con la stessa chiave computer e lo stesso algoritmo di decrittografia.For the case of Forms authentication which requires the decryption of the Authentication cookie, both processes need to be configured with the same machine key and decryption algorithm. Si tratta di un passaggio già noto a coloro hanno precedentemente configurato Reporting Services per l'uso in ambienti di scalabilità orizzontale, ma ora è un requisito anche per le distribuzioni in un singolo computer.This was a step familiar to those who had previously setup Reporting Services to work on scale-out environments, but now is a requirement even for deployments on a single machine.

Usare una chiave di convalida specifica per la distribuzione. Sono disponibili diversi strumenti per la generazione delle chiavi, ad esempio Gestione Internet Information Services (IIS).You should use a validation key specific for you deployment, there are several tools to generate the keys like Internet Information Services Manager (IIS). Altri strumenti sono disponibili su Internet.Other tools can be found on the internet.

SQL Server Reporting Services 2017 e versioni successiveSQL Server Reporting Services 2017 and later

\ReportServer\rsReportServer.config\ReportServer\rsReportServer.config

Aggiungere in <configuration>.Add under <configuration>.

<machineKey validationKey="[YOUR KEY]" decryptionKey=="[YOUR KEY]" validation="AES" decryption="AES" />

SQL Server Reporting Services 2016SQL Server Reporting Services 2016

\ReportServer\web.config\ReportServer\web.config

Aggiungere in <system.web>.Add under <system.web>.

    <machineKey validationKey="[YOUR KEY]" decryptionKey=="[YOUR KEY]" validation="AES" decryption="AES" />

\RSWebApp\Microsoft.ReportingServices.Portal.WebHost.exe.config\RSWebApp\Microsoft.ReportingServices.Portal.WebHost.exe.config

Aggiungere in <configuration>.Add under <configuration>.

    <system.web>
        <machineKey validationKey=="[YOUR KEY]" decryptionKey=="[YOUR KEY]" validation="AES" decryption="AES" />
    </system.web>

Server di report di Power BIPower BI Report Server

Disponibile a partire dalla versione di giugno 2017 (Build 14.0.600.301).This is available as of the June 2017 (Build 14.0.600.301) release.

\ReportServer\rsReportServer.config\ReportServer\rsReportServer.config

Aggiungere in <configuration>.Add under <configuration>.

<machineKey validationKey="[YOUR KEY]" decryptionKey=="[YOUR KEY]" validation="AES" decryption="AES" />

Configurare i cookie pass-throughConfigure Passthrough cookies

Analogamente alla versione precedente di Gestione report, il nuovo portale e ReportServer comunicano tramite API SOAP interne per alcune operazioni.The new portal and the reportserver communicate using internal soap APIs for some of its operations (similar to the previous version of the Report Manager). Quando è necessario il passaggio di ulteriori cookie dal portale al server, le proprietà PassThroughCookies sono ancora disponibili.When additional cookies are required to be passed from the portal to the server the PassThroughCookies properties is still available. Per altre informazioni, vedere Configurare il portale Web per il passaggio di cookie di autenticazione personalizzati.For more information, see Configure the Web Portal to Pass Custom Authentication Cookies.

<UI>
   <CustomAuthenticationUI>
      <PassThroughCookies>
         <PassThroughCookie>sqlAuthCookie</PassThroughCookie>
      </PassThroughCookies>
   </CustomAuthenticationUI>
</UI>

Passaggi successiviNext steps

Configurare l'autenticazione personalizzata o basata su form nel server di reportConfigure Custom or Forms Authentication on the Report Server
Configurare Gestione report per il passaggio di cookie di autenticazione personalizzatiConfigure Report Manager to Pass Custom Authentication Cookies

Altre domande?More questions? Visitare il forum su Reporting ServicesTry asking the Reporting Services forum