Autenticazione in Reporting ServicesAuthentication in Reporting Services

L'autenticazione è il processo di determinazione del diritto di un utente a un'identità.Authentication is the process of establishing a user's right to an identity. Per autenticare un utente sono disponibili numerose tecniche.There are many techniques that you can use to authenticate a user. La più comune consiste nell'utilizzo di password.The most common way is to use passwords. Quando si implementa l'autenticazione basata su form, ad esempio, si sceglie un'implementazione che richiede le credenziali agli utenti (generalmente tramite un'interfaccia in cui vengono richiesti un nome di accesso e una password), quindi si convalidano gli utenti in base a un archivio dati, ad esempio una tabella di database o un file di configurazione.When you implement Forms Authentication, for example, you want an implementation that queries users for credentials (usually by some interface that requests a login name and password) and then validates users against a data store, such as a database table or configuration file. Se non è possibile convalidare le credenziali, il processo di autenticazione non riesce e all'utente viene assegnata un'identità anonima.If the credentials can't be validated, the authentication process fails and the user will assume an anonymous identity.

Autenticazione personalizzata in Reporting ServicesCustom Authentication in Reporting Services

In Reporting ServicesReporting Services l'autenticazione degli utenti viene gestita dal sistema operativo Windows tramite la sicurezza integrata o tramite operazioni esplicite di ricezione e convalida delle credenziali utente.In Reporting ServicesReporting Services, the Windows operating system handles the authentication of users either through integrated security or through the explicit reception and validation of user credentials. L'autenticazione personalizzata può essere sviluppata in Reporting ServicesReporting Services per supportare schemi di autenticazione aggiuntivi.Custom authentication can be developed in Reporting ServicesReporting Services to support additional authentication schemes. Ciò è possibile tramite l'interfaccia dell'estensione di sicurezza IAuthenticationExtension2.This is made possible through the security extension interface IAuthenticationExtension2. Tutte le estensioni ereditano dall'interfaccia di base IExtension per qualsiasi estensione distribuita e utilizzata dal server di report.All extensions inherit from the IExtension base interface for any extension deployed and used by the report server. IExtension e IAuthenticationExtension2 sono membri dello spazio dei nomi Microsoft.ReportingServices.Interfaces.IExtension, as well as IAuthenticationExtension2, are members of the Microsoft.ReportingServices.Interfaces namespace.

La principale modalità di autenticazione in un server di report in Reporting ServicesReporting Services è costituita dal metodo LogonUser.The primary way to authenticate against a report server in Reporting ServicesReporting Services is the LogonUser method. Questo membro del servizio Web Reporting Services può essere utilizzato per passare le credenziali utente a un server di report per la convalida.This member of the Reporting Services Web service can be used to pass user credentials to a report server for validation. Il sottostante implementa estensione di sicurezza IAuthenticationExtension2.LogonUser che contiene il codice di autenticazione personalizzato.Your underlying security extension implements IAuthenticationExtension2.LogonUser which contains your custom authentication code. Nell'esempio di autenticazione basata su form, LogonUser, che esegue un controllo di autenticazione con le credenziali fornite e un archivio utente personalizzato in un database.In the Forms Authentication sample, LogonUser, which performs an authentication check against the supplied credentials and a custom user store in a database. Un esempio di un'implementazione di LogonUser simile al seguente:An example of an implementation of LogonUser looks like this:

public bool LogonUser(string userName, string password, string authority)  
{  
   return AuthenticationUtilities.VerifyPassword(userName, password);  
}  

La funzione di esempio seguente viene utilizzata per verificare le credenziali fornite:The following sample function is used to verify the supplied credentials:


internal static bool VerifyPassword(string suppliedUserName,  
   string suppliedPassword)  
{   
   bool passwordMatch = false;  
   // Get the salt and pwd from the database based on the user name.  
   // See "How To: Use DPAPI (Machine Store) from ASP.NET," "How To:  
   // Use DPAPI (User Store) from Enterprise Services," and "How To:  
   // Create a DPAPI Library" for more information about how to use  
   // DPAPI to securely store connection strings.  
   SqlConnection conn = new SqlConnection(  
      "Server=localhost;" +   
      "Integrated Security=SSPI;" +  
      "database=UserAccounts");  
   SqlCommand cmd = new SqlCommand("LookupUser", conn);  
   cmd.CommandType = CommandType.StoredProcedure;  

   SqlParameter sqlParam = cmd.Parameters.Add("@userName",  
       SqlDbType.VarChar,  
       255);  
   sqlParam.Value = suppliedUserName;  
   try  
   {  
      conn.Open();  
      SqlDataReader reader = cmd.ExecuteReader();  
      reader.Read(); // Advance to the one and only row  
      // Return output parameters from returned data stream  
      string dbPasswordHash = reader.GetString(0);  
      string salt = reader.GetString(1);  
      reader.Close();  
      // Now take the salt and the password entered by the user  
      // and concatenate them together.  
      string passwordAndSalt = String.Concat(suppliedPassword, salt);  
      // Now hash them  
      string hashedPasswordAndSalt =  
         FormsAuthentication.HashPasswordForStoringInConfigFile(  
         passwordAndSalt,  
         "SHA1");  
      // Now verify them. Returns true if they are equal.  
      passwordMatch = hashedPasswordAndSalt.Equals(dbPasswordHash);  
   }  
   catch (Exception ex)  
   {  
       throw new Exception("Exception verifying password. " +  
          ex.Message);  
   }  
   finally  
   {  
       conn.Close();  
   }  
   return passwordMatch;  
}  

Flusso di autenticazioneAuthentication Flow

Il servizio Web di Reporting Services fornisce estensioni di autenticazione personalizzate per abilitare l'autenticazione basata su form per il portale web e il server di report.The Reporting Services Web service provides custom authentication extensions to enable Forms Authentication by the web portal and the report server.

Il metodo LogonUser del servizio Web Reporting Services viene utilizzato per inviare le credenziali al server di report per l'autenticazione.The LogonUser method of the Reporting Services Web service is used to submit credentials to the report server for authentication. Il servizio Web utilizza le intestazioni HTTP per passare un ticket di autenticazione (noto come "cookie") dal server al client per le richieste di accesso convalidate.The Web service uses HTTP headers to pass an authentication ticket (known as a "cookie") from the server to the client for validated logon requests.

Nell'illustrazione seguente è rappresentato il metodo di autenticazione degli utenti per il servizio Web quando l'applicazione viene distribuita con un server di report configurato per l'utilizzo di un'estensione di autenticazione personalizzata.The following illustration depicts the method of authenticating users to the Web service when your application is deployed with a report server configured to use a custom authentication extension.

Flusso di autenticazione di sicurezza di servizi di reportingReporting Services security authentication flow

Come illustrato nella figura 2, il processo di autenticazione è il seguente:As shown in Figure 2, the authentication process is as follows:

  1. Un'applicazione client chiama il metodo LogonUser del servizio Web per autenticare un utente.A client application calls the Web service LogonUser method to authenticate a user.

  2. Il servizio Web effettua una chiamata al LogonUser metodo di estensione di sicurezza, in particolare, la classe che implementa IAuthenticationExtension2.The Web service makes a call to the LogonUser method of your security extension, specifically, the class that implements IAuthenticationExtension2.

  3. L'implementazione di LogonUser convalida il nome utente e la password nell'archivio utente o nell'autorità di sicurezza.Your implementation of LogonUser validates the user name and password in the user store or security authority.

  4. Dopo la corretta esecuzione dell'autenticazione, il servizio Web crea un cookie e lo gestisce per la sessione.Upon successful authentication, the Web service creates a cookie and manages it for the session.

  5. Il servizio Web restituisce il ticket di autenticazione all'applicazione chiamante nell'intestazione HTTP.The Web service returns the authentication ticket to the calling application on the HTTP header.

    Quando un utente viene correttamente autenticato dal servizio Web tramite l'estensione di sicurezza, viene generato un cookie utilizzato per le richieste successive.When the Web service successfully authenticates a user through the security extension, it generates a cookie that is used for subsequent requests. Il cookie non può essere reso persistente nell'autorità di sicurezza personalizzata perché il server di report non possiede l'autorità di sicurezza.The cookie may not persist within the custom security authority because the report server does not own the security authority. Il cookie viene restituito dal metodo del servizio Web LogonUser e viene utilizzato nelle successive chiamate al metodo del servizio Web e nell'accesso con URL.The cookie is returned from the LogonUser Web service method and is used in subsequent Web service method calls and in URL access.

Nota

Per evitare di compromettere il cookie durante la trasmissione, i cookie di autenticazione restituiti da LogonUser devono essere trasmessi in modo protetto utilizzando la crittografia SSL (Secure Sockets Layer).In order to avoid compromising the cookie during transmission, authentication cookies returned from LogonUser should be transmitted securely using Secure Sockets Layer (SSL) encryption.

Se si accede al server di report tramite accesso con URL quando un'estensione di sicurezza personalizzata è installata, Internet Information Services (IIS) e ASP.NETASP.NET gestiscono automaticamente la trasmissione del ticket di autenticazione.If you access the report server through URL access when a custom security extension is installed, Internet Information Services (IIS) and ASP.NETASP.NET automatically manage the transmission of the authentication ticket. Se si accede al server di report tramite l'API SOAP, l'implementazione della classe proxy deve includere supporto aggiuntivo per la gestione del ticket di autenticazione.If you are accessing the report server through the SOAP API, your implementation of the proxy class must include additional support for managing the authentication ticket. Per ulteriori informazioni sull'utilizzo dell'API SOAP e sulla gestione del ticket di autenticazione, vedere "Utilizzo del servizio Web con la sicurezza personalizzata".For more information about using the SOAP API and managing the authentication ticket, see "Using the Web Service with Custom Security."

Autenticazione basata su formForms Authentication

L'autenticazione basata su form è un tipo di autenticazione di ASP.NETASP.NET con la quale un utente non autenticato viene indirizzato a un form HTML.Forms Authentication is a type of ASP.NETASP.NET authentication in which an unauthenticated user is directed to an HTML form. Dopo che l'utente ha fornito le credenziali, il sistema produce un cookie contenente un ticket di autenticazione.Once the user provides credentials, the system issues a cookie containing an authentication ticket. In occasione delle richieste successive, il sistema controlla innanzitutto il cookie per verificare se l'utente è già stato autenticato dal server di report.On later requests, the system first checks the cookie to see if the user was already authenticated by the report server.

È possibile estendere Reporting ServicesReporting Services per supportare l'autenticazione basata su form utilizzando le interfacce di estendibilità della sicurezza disponibili tramite l'API di Reporting Services. Reporting ServicesReporting Services can be extended to support Forms Authentication using the security extensibility interfaces available through the Reporting Services API. Se si estende Reporting ServicesReporting Services per l'utilizzo dell'autenticazione basata su form, utilizzare SSL (Secure Sockets Layer) per tutte le comunicazioni con il server di report per impedire a utenti malintenzionati di accedere al cookie di un altro utente.If you extend Reporting ServicesReporting Services to use Forms Authentication, use Secure Sockets Layer (SSL) for all communications with the report server to prevent malicious users from gaining access to another user's cookie. SSL consente ai client e a un server di report di autenticarsi a vicenda per garantire che il contenuto delle comunicazioni tra i due computer non possa essere letto da nessun altro computer.SSL enables clients and a report server to authenticate each other and to ensure that no other computers can read the contents of communications between the two computers. Tutti i dati inviati da un client tramite una connessione SSL vengono crittografati in modo che gli utenti malintenzionati non possano intercettare le password o i dati inviati a un server di report.All data sent from a client through an SSL connection is encrypted so that malicious users cannot intercept passwords or data sent to a report server.

L'autenticazione basata su form viene in genere implementata per supportare account e autenticazione per piattaforme diverse da Windows.Forms Authentication is generally implemented to support accounts and authentication for platforms other than Windows. Quando un utente richiede l'accesso a un server di report, viene visualizzata un'interfaccia grafica e le credenziali fornite vengono inviate a un'autorità di sicurezza per l'autenticazione.A graphical interface is presented to a user who requests access to a report server, and the supplied credentials are submitted to a security authority for authentication.

L'autenticazione basata su form richiede la presenza di una persona per l'immissione delle credenziali.Forms Authentication requires that a person is present to enter credentials. Per le applicazioni automatiche che comunicano direttamente con il servizio Web Reporting Services, l'autenticazione basata su form deve essere utilizzata in combinazione con uno schema di autenticazione personalizzato.For unattended applications that communicate directly with the Reporting Services Web service, Forms Authentication must be combined with a custom authentication scheme.

L'autenticazione basata su form è adatta per Reporting ServicesReporting Services nei casi seguenti:Forms Authentication is appropriate for Reporting ServicesReporting Services when:

  • Quando è necessario archiviare e autenticare utenti che non dispongono di account di MicrosoftMicrosoft Windows.You need to store and authenticate users that do not have MicrosoftMicrosoft Windows accounts, and

  • Quando è necessario fornire un modulo di interfaccia utente personalizzato come pagina di accesso tra pagine diverse in un sito Web.You need to provide your own user interface form as a logon page between different pages on a Web site.

    Quando si scrive un'estensione di sicurezza personalizzata che supporta l'autenticazione basata su form, prendere in considerazione gli aspetti seguenti:Consider the following when writing a custom security extension that supports Forms Authentication:

  • Se si utilizza l'autenticazione basata su form, l'accesso anonimo deve essere abilitato nella directory virtuale del server di report in Internet Information Services (IIS).If you use Forms Authentication, anonymous access must be enabled on the report server virtual directory in Internet Information Services (IIS).

  • L'autenticazione di ASP.NETASP.NET deve essere impostata su Forms. ASP.NETASP.NET authentication must be set to Forms. È possibile configurare l'autenticazione di ASP.NETASP.NET nel file Web.config per il server di report.You configure ASP.NETASP.NET authentication in the Web.config file for the report server.

  • Reporting ServicesReporting Services consente di autenticare e autorizzare gli utenti con l'autenticazione di Windows o con l'autenticazione personalizzata, ma non con entrambe. can authenticate and authorize users with either Windows Authentication or custom authentication, but not both. Reporting ServicesReporting Services non supporta l'utilizzo simultaneo di più estensioni di sicurezza. does not support simultaneous use of multiple security extensions.

Vedere ancheSee Also

Implementazione di un'estensione di sicurezzaImplementing a Security Extension