Autorizzazione in Reporting ServicesAuthorization in Reporting Services

L'autorizzazione è il processo tramite cui viene determinato se a un'identità deve essere concesso il tipo di accesso richiesto a una determinata risorsa nel database del server di report.Authorization is the process of determining whether an identity should be granted the requested type of access to a given resource in the report server database. In Reporting ServicesReporting Services viene utilizzata un'architettura di autorizzazione basata sui ruoli che consente di concedere a un utente l'accesso a una determinata risorsa in base all'assegnazione di ruolo dell'utente per l'applicazione. Reporting ServicesReporting Services uses a role-based authorization architecture that grants a user access to a given resource based on the user's role assignment for the application. Le estensioni di sicurezza per Reporting ServicesReporting Services contengono un'implementazione di un componente di autorizzazione utilizzata per concedere l'accesso agli utenti dopo l'autenticazione nel server di report.Security extensions for Reporting ServicesReporting Services contain an implementation of an authorization component that is used to grant access to users once they are authenticated on the report server. L'autorizzazione viene richiamata quando un utente tenta di eseguire un'operazione nel sistema o in un elemento del server di report tramite l'API SOAP e l'accesso con URL.Authorization is invoked when a user attempts to perform an operation on the system or a report server item through the SOAP API and via URL access. Questo è reso possibile tramite l'interfaccia di estensione di sicurezza IAuthorizationExtension2.This is made possible through the security extension interface IAuthorizationExtension2. Come indicato in precedenza, tutte le estensioni ereditano da IExtension l'interfaccia di base per qualsiasi estensione da distribuire.As stated previously, all extensions inherit from IExtension the base interface for any extension that you deploy. IExtension e IAuthorizationExtension2 sono membri del Microsoft.ReportingServices.Interfaces dello spazio dei nomi.IExtension and IAuthorizationExtension2 are members of the Microsoft.ReportingServices.Interfaces namespace.

Controllo dell'accessoChecking Access

Nell'ambito dell'autorizzazione, la chiave per qualsiasi implementazione della sicurezza personalizzata è il controllo dell'accesso, implementato nel metodo CheckAccess.In authorization, the key to any custom security implementation is the access check, which is implemented in the CheckAccess method. CheckAccess viene chiamato ogni volta che un utente tenta un'operazione sul server di report.CheckAccess is called each time a user attempts an operation on the report server. Il metodo CheckAccess è sottoposto a overload per ogni tipo di operazione.The CheckAccess method is overloaded for each operation type. Per le operazioni sulle cartelle, un esempio di controllo dell'accesso potrebbe essere simile al seguente:For folder operations, an example of an access check might look like the following:

// Overload for Folder operations  
public bool CheckAccess(  
   string userName,   
   IntPtr userToken,   
   byte[] secDesc,   
   FolderOperation requiredOperation)  
{  
   // If the user is the administrator, allow unrestricted access.  
   if (userName == m_adminUserName)   
      return true;  

   AceCollection acl = DeserializeAcl(secDesc);  
   foreach(AceStruct ace in acl)  
   {  
         if (userName == ace.PrincipalName)  
         {  
            foreach(FolderOperation aclOperation in   
               ace.FolderOperations)  
            {  
               if (aclOperation == requiredOperation)  
                     return true;  
            }  
         }  
   }  
   return false;  
}  

Il server di report chiama il metodo CheckAccess passando il nome dell'utente connesso, un token utente, il descrittore di sicurezza per l'elemento e l'operazione richiesta.The report server calls the CheckAccess method by passing in the name of the logged-on user, a user token, the security descriptor for the item, and the requested operation. In questo caso controllare il descrittore di sicurezza per il nome utente e delle autorizzazioni appropriate per completare la richiesta, quindi tornare true per indicare che l'accesso viene concesso o false per indicare l'accesso è negato.Here you would check the security descriptor for the user name and the appropriate permission to complete the request, then return true to signify that access is granted or false to signify access is denied.

Descrittori di sicurezzaSecurity Descriptors

Quando si impostano i criteri di autorizzazione per gli elementi nel database del server di report, un'applicazione client (ad esempio Gestione report) invia le informazioni utente all'estensione di sicurezza insieme ai criteri di sicurezza per l'elemento.When setting authorization policies on items in the report server database, a client application (such as Report Manager) submits the user information to the security extension along with a security policy for the item. I criteri di sicurezza e le informazioni utente sono collettivamente denominati descrittore di sicurezza.This security policy and user information are known collectively as a security descriptor. Un descrittore di sicurezza contiene le informazioni seguenti per un elemento nel database del server di report:A security descriptor contains the following information for an item in the report server database:

  • Gruppo o utente che dispone di un tipo di autorizzazione per l'esecuzione di operazioni sull'elemento.The group or user that has some type of permission to perform operations on the item.

  • Tipo di elemento.The item's type.

  • Elenco di controllo di accesso discrezionale che controlla l'accesso all'elemento.A discretionary access control list controlling access to the item.

    I descrittori di sicurezza vengono creati utilizzando i metodi SetPolicies e SetSystemPolicies del servizio Web.Security descriptors are created using the Web service SetPolicies and SetSystemPolicies methods.

Flusso di autorizzazioneAuthorization Flow

L'autorizzazione in Reporting ServicesReporting Services viene controllata dall'estensione di sicurezza attualmente configurata per l'esecuzione nel server. Reporting ServicesReporting Services authorization is controlled by the security extension currently configured to run on the server. L'autorizzazione è basata sul ruolo ed è limitata alle autorizzazioni e alle operazioni fornite dall'architettura di sicurezza di Reporting ServicesReporting Services.Authorization is role-based and limited to the permissions and operations supplied by the Reporting ServicesReporting Services security architecture. Nel diagramma seguente è illustrato il processo di autorizzazione degli utenti per l'utilizzo degli elementi nel database del server di report:The following diagram depicts the process of authorizing users to operate on items in the report server database:

Flusso per Reporting Services security autorizzazioneReporting Services security authorization flow

Come illustrato in questo diagramma, per l'autorizzazione viene applicata la sequenza seguente:As shown in this diagram, authorization follows this sequence:

  1. Dopo l'autenticazione, le applicazioni client inviano le richieste al server di report tramite i metodi del servizio Web Reporting Services.Once authenticated, client applications make requests to the report server through the Reporting Services Web service methods. Un ticket di autenticazione viene passato al server di report sotto forma di cookie nell'intestazione HTTP di ogni richiesta Web.An authentication ticket is passed to the report server in the form of a cookie in the HTTP header of each Web request.

  2. Il cookie viene convalidato prima di qualsiasi controllo dell'accesso.The cookie is validated prior to any access check.

  3. Dopo la convalida del cookie, il server di report chiama GetUserInfo e all'utente viene fornita un'identità.Once the cookie is validated, the report server calls GetUserInfo and the user is given an identity.

  4. L'utente tenta di eseguire un'operazione tramite il servizio Web Reporting Services.The user attempts an operation through the Reporting Services Web service.

  5. Il server di report chiama il metodo CheckAccess.The report server calls the CheckAccess method.

  6. Il descrittore di sicurezza viene recuperato e passato a un'implementazione dell'estensione di sicurezza personalizzata di CheckAccess.The security descriptor is retrieved and passed to a custom security extension implementation of CheckAccess. A questo punto, l'utente, il gruppo o il computer viene confrontato con il descrittore di sicurezza dell'elemento a cui viene eseguito l'accesso e viene autorizzato a eseguire l'operazione richiesta.At this point, the user, group, or computer is compared to the security descriptor of the item being accessed and is authorized to perform the requested operation.

  7. Se l'utente è autorizzato, il servizio Web esegue l'operazione e restituisce una risposta all'applicazione chiamante.If the user is authorized, the Web service performs the operation and returns a response to the calling application.