Risoluzione dei problemi relativi alla protezione estesa (Reporting Services)
Utilizzare le informazioni incluse in questo argomento per risolvere i problemi che possono verificarsi durante l'utilizzo della protezione estesa con SQL Server 2008 R2 Reporting Services. Queste informazioni possono inoltre rivelarsi utili per risolvere i problemi di autenticazione generici la cui causa potrebbe dipendere dalla configurazione della protezione estesa. Per informazioni sugli sviluppi recenti della protezione estesa, vedere la pagina relativa alle informazioni aggiornate sulla protezione estesa.
Common issues and support scenarios
Error messages
Error states
Problemi comuni e scenari di supporto
Come è possibile verificare le impostazioni correnti relative alla protezione estesa?
Le impostazioni RSWindowsExtendedProtectionLevel e RSWindowsExtendedProtectionScenario vengono salvate nel file rsreportserver.config. Per ulteriori informazioni sulle impostazioni di configurazione, vedere Protezione estesa per l'autenticazione con Reporting Services.
Utilizzare le API di WMI. Per ulteriori informazioni, vedere Metodo SetExtendedProtectionSettings (MSReportServer_ConfigurationSetting WMI).
Nel file di log di traccia reportserverservice saranno incluse le voci che indicano l'impostazione corrente. Le voci del log di traccia vengono scritte all'avvio del servizio del server di report. Le voci saranno simili alle seguenti:
library!DefaultDomain!698!12/29/2009-10:14:49:: i INFO: Initializing RSWindowsExtendedProtectionLevel to 'Off' as specified in Configuration file.
library!DefaultDomain!698!12/29/2009-10:14:49:: i INFO: Initializing RSWindowsExtendedProtectionScenario to 'Proxy' as specified in Configuration file.
Come è possibile stabilire se il problema di autenticazione non riuscita è causato dalla protezione estesa?
Nel file di log di traccia del server di report saranno incluse voci simili alla seguente:
http!rshost!ec0!12/29/2009-11:01:37:: i INFO: Authentication failed with error state: 46
Individuare il numero di contesto dell'errore e le informazioni aggiuntive nell'elenco di error states alla fine di questo argomento.
Come è possibile verificare se i controlli della protezione estesa sono in esecuzione?
Abilitare la registrazione dettagliata mediante l'aggiornamento del file di configurazione reportingservicesservice.exe.config. Nella sezione <RStrace> impostare:
<add name=”Components” value=”all:4” />
Riavviare il servizio.
Con la registrazione dettagliata abilitata, il processo di autenticazione determinerà la scrittura di righe simili a quelle riportate di seguito, indicando se è in corso la verifica del binding di canale, dell'associazione al servizio o di entrambi:
http!rshost!ec0!12/29/2009-11:01:37:: v VERBOSE: Esecuzione della verifica del binding di canale come proxy.
http!rshost!7b0!12/29/2009-11:26:23:: v VERBOSE: Esecuzione della verifica del binding di canale.
Per ulteriori informazioni, vedere File di configurazione ReportingServicesService.
Catalogo del server di report
Microsoft SQL Client non è stato aggiornato per supportare la protezione estesa al momento del rilascio di SQL Server 2008 R2. SQL Client viene utilizzato per connettersi alle origini dati di SQL Server e al database del catalogo Reporting Services. Questa limitazione di SQL Client determina un impatto su Reporting Services nei modi seguenti:
Per l'istanza di SQL Server che esegue il database del catalogo di Reporting Services non è possibile abilitare la protezione estesa. In caso contrario, il server di report non sarà in grado di connettersi al database del catalogo e restituirà errori di autenticazione.
Per tutte le istanze di Server SQL utilizzate come origini dati di report Reporting Services non è possibile abilitare la protezione estesa. In caso contrario, i tentativi di connessione effettuati dal server di report alle origini dati dei report avranno esito negativo e verranno restituiti errori di autenticazione. Per risolvere il problema è possibile modificare le origini dati Reporting Services in modo che utilizzino provider nativi anziché SQL Client. Configurare ad esempio le origini dati per il driver ODBC che comporta l'utilizzo di SQL Native Client dotato del supporto per la protezione estesa.
Cosa accade se si abilita la protezione estesa senza configurare SSL?
Il comportamento dipende dall'impostazione di RSWindowsExtendedProtectionScenario nel file di configurazione rsreportserver.config.
Impostazione di RSWindowsExtendedProtectionScenario su Direct e SSL mancante
Quando l'impostazione di RSWindowsExtendedProtectionScenario è Direct e non è presente alcuna prenotazione URL SSL per il server di report o Gestione report, agli utenti che visualizzano il server di report o Gestione report viene in genere presentata una finestra Gestione report vuota,
poiché la mancanza di SSL e l'impostazione di RSWindowsExtendedProtectionScenario su Direct determina la disabilitazione dei tipi di autenticazione <RSWindowsNTLM />, <RSWindowsNegotiate /> e <RSWindowsKerberos /> da parte del server di report. Non risulterà pertanto abilitato alcun tipo di autenticazione e il server di report non risponderà alle richieste. Ciò comporta la visualizzazione di finestre vuote.
Nel file di log di traccia saranno presenti messaggi di errore simili ai seguenti:
configmanager!DefaultDomain!938!12/29/2009-11:39:39:: e ERROR: SSL is required on Report Server connections when ExtendedProtectionScenario is set to Direct
configmanager!DefaultDomain!938!12/29/2009-11:39:39:: e ERROR: SSL is required on Report Manager connections when ExtendedProtectionScenario is set to Direct
Impostazione di RSWindowsExtendedProtectionScenario su proxy e SSL mancante
Quando l'impostazione di RSWindowsExtendedProtectionScenario corrisponde a Proxy e SSL non fa parte dell'ambiente, agli utenti che visualizzano il server di report o Gestione report verrà presentata una pagina di richiesta delle credenziali, che in nessun caso comporterà un'autenticazione corretta. Se SSL è configurato nel server di report, l'aggiunta di "s" all'URL utilizzato nel browser per il server di report o Gestione report consentirà di risolvere il problema. Ad esempio, l'utilizzo di https://<uri> risolverà il problema della visualizzazione della pagina di autenticazione, se ciò dipende dall'impostazione di RSWindowsExtendedProtectionSscenario su proxy.
Nel file di log di traccia del server di report saranno inclusi messaggi simili ai seguenti:
http!rshost!ec0!12/29/2009-11:01:37:: i INFO: Performing Channel Binding Check as Proxy
http!rshost!76c!12/29/2009-10:26:12:: i INFO: Authentication failed with error state: 45
http!rshost!ec0!12/29/2009-11:01:37:: i INFO: Performing Channel Binding Check as Proxy
http!rshost!ec0!12/29/2009-11:01:37:: i INFO: Authentication failed with error state: 46
Dopo avere abilitato la protezione estesa, è possibile connettersi con Internet Explorer, ma non tramite Generatore report, Management Studio o qualsiasi client .NET
Questo scenario si applica solo ai sistemi operativi antecedenti a Windows 7 e Windows 2008 R2. Le versioni di Windows precedenti non sono state inizialmente rilasciate con la funzionalità di protezione estesa e pertanto un computer con una versione precedente del sistema operativo potrebbe non disporre di tutti gli aggiornamenti della protezione estesa, incluso l'aggiornamento della protezione estesa per .NET Framework.
Quando l'impostazione di RSWindowsExtendedProtectionLevel corrisponde a Allow o Require, un'applicazione client in esecuzione in un sistema operativo che supporta la protezione estesa deve fornire il binding di canale e talvolta l'associazione al servizio. In questo esempio:
Internet Explorer è stato aggiornato per la protezione estesa nell'ambito dell'aggiornamento della protezione estesa di Windows.
A .NET Framework non è stato tuttavia applicata una patch. .NET Framework è necessario per i client .NET quali Generatore report e Management Studio.
Per diagnosticare questo problema, disabilitare la protezione estesa e verificare che l'applicazione client .NET sia in grado di connettersi. Per disabilitare la protezione estesa:
Impostare RSWindowsExtendedProtectionLevel su Off nel file RSReportServer.config.
Riavviare il servizio del server di report.
La soluzione consiste nello scaricare tutti gli aggiornamenti di .NET Framework.
Con la protezione estesa abilitata, l'autenticazione delle connessioni locali ha esito positivo, mentre quella delle connessioni remote non riesce
Quando si esegue un'autenticazione di loopback, il sistema operativo ignora il meccanismo di autenticazione e non impone il binding di canale.
Pertanto, quando si utilizza una connessione HTTP con le impostazioni di configurazione seguenti:
RSWindowsExtendedProtectionLevel impostato su Require
E
RSWindowsExtendedProtectionScenario impostato su Proxy
Le connessioni locali avranno esito positivo, ma non le connessioni remote.
A seconda dell'URL utilizzato per stabilire la connessione locale e dalle prenotazioni di URL configurate nel server di report, è comunque possibile che la connessione locale non riesca con un errore di associazione al servizio, in quanto il nome SPN creato in base alla prenotazione di URL potrebbe non corrispondere a un nome SPN nell'elenco di nomi SPN validi.
La connessione remota avrà sempre esito negativo quando si stabilisce una connessione HTTP senza che sia presente un gateway tra il client e il server di report configurato per stabilire una connessione SSL.
Errore 401: autorizzazione negata quando si utilizza un'intestazione host
Questo scenario è specifico per una distribuzione con scalabilità orizzontale di Reporting Services e si presenta quando Gestione report e il server di report si trovano nello stesso computer e utilizzano entrambi intestazioni host e l'autenticazione di Windows. Ad esempio, se si tenta di accedere a Gestione report all'indirizzo http://<nome>/reports, non verrà visualizzato un elenco di report e cartelle come previsto, ma si riceverà il messaggio di errore "HTTP 401 (autorizzazione negata)".
Il riferimento <nome> non corrisponde al nome fisico del computer e viene considerato come un'intestazione host. Si tratta di un nome alternativo per il computer in cui è installato Reporting Services. Le intestazioni host vengono inoltre utilizzate come un'origine per i nomi SPN validi quando Reporting Services elabora l'elenco di nomi SPN validi per la protezione estesa.
Per evitare che si verifichi l'errore 401 di autorizzazione negata, sarà necessario aggiungere il nome del NetBIOS e il nome di dominio completo (FQDN) per <nome> all'elenco di BackConnectionHostNames archiviato nel Registro di sistema di Windows. Riavviare il computer dopo avere apportato la modifica al Registro di sistema.
Per ulteriori informazioni sulla modifica del Registro di sistema, vedere la sezione relativa al metodo 2 per la specifica dei nomi host nell'articolo 896861 della Microsoft Knowledge Base 896861 riguardante la ricezione dell'errore 401.1 durante l'esplorazione di un sito Web che utilizza l'autenticazione integrata ed è ospitato in IIS 5.1 o versione successiva.
Messaggi di errore
Nel file di log di traccia del servizio del server di report potrebbe essere presente l'elenco di messaggi seguente:
Messaggio di errore |
Tipo |
Causa |
Procedura per la risoluzione del problema |
---|---|---|---|
Missing or Invalid ExtendedProtectionScenario setting |
Errore |
|
|
SSL is required on Report Server connections when ExtendedProtectionScenario is set to Direct |
Errore |
|
|
HTTP traffic to Report Server will fail NTLM, Kerberos, Negotiate authentication |
Avviso |
|
|
SSL is required on Report Manager connections when ExtendedProtectionScenario is set to Direct |
Errore |
|
|
Direct connections to Report Server will fail NTLM, Kerberos, Negotiate Authentication |
Avviso |
|
|
HTTP traffic to Report Manager may fail NTLM, Kerberos, Negotiate authentication |
Avviso |
|
|
Contesti di errore
In questa sezione sono inclusi i nomi e le descrizioni dei codici di errore che potrebbero essere presenti nel log di traccia del servizio del server di report correlati alla protezione estesa. Per ulteriori informazioni, vedere Log di traccia del servizio del server di report.
codice |
Nome del contesto di errore |
Descrizione |
---|---|---|
44 |
SNIAUTH_ERRST_SSPIHANDSHAKE_CHANNELBINDINGS_NOTSUPPORTED |
Il sistema operativo non supporta i binding di canale, ma il server di report è configurato per richiedere la protezione estesa. Aggiornare il sistema operativo o disabilitare la protezione estesa. |
45 |
SNIAUTH_ERRST_SSPIHANDSHAKE_CHANNELBINDINGS_EMPTYORWRONG |
I binding di canale dal client non corrispondono al canale Transport Layer Security stabilito. Il servizio potrebbe essere sotto attacco oppure il provider di dati potrebbe richiedere un aggiornamento per supportare la protezione estesa. La connessione è stata chiusa. |
46 |
SNIAUTH_ERRST_SSPIHANDSHAKE_CHANNELBINDINGS_NULLOREMPTYORWRONG |
I binding di canale da questo client non sono disponibili o non corrispondono al canale Transport Layer Security stabilito. Il servizio potrebbe essere sotto attacco oppure il provider di dati o il sistema operativo client potrebbe richiedere un aggiornamento per supportare la protezione estesa. La connessione è stata chiusa. |
48 |
SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_UNSUPPORTED |
Il sistema operativo non supporta le associazioni ai servizi, ma il server è configurato per richiedere la protezione estesa. Aggiornare il sistema operativo o disabilitare la protezione estesa. |
49 |
SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_QUERYCONTEXTATTRIBUTES |
QueryContextAttributes non ha potuto recuperare le associazioni ai servizi. Il codice di errore di Windows indica la causa del problema. |
51 |
SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_NULL |
Il livello della protezione estesa del server è impostato su Consentito o Obbligatorio e il client non ha fornito un nome SPN (Service Principal Name). Per connettersi, il client deve supportare la protezione estesa. Potrebbe essere necessario installare un service pack del sistema operativo che consenta l'associazione al servizio e il binding di canale. |
52 |
SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_EMPTY |
Il livello della protezione estesa del server è impostato su Consentito o Obbligatorio e il client non ha fornito un nome SPN. Per connettersi, il client deve supportare la protezione estesa. |
53 |
SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_SERVICECLASSMISMATCH |
L'elemento Classe Service del nome SPN ricevuto non è valido. |
54 |
SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_IPADDRESSMISMATCH |
L'elemento Indirizzo IP del nome SPN ricevuto non è valido. |
55 |
SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_HOSTNAMEMISMATCH |
L'elemento Host del nome SPN ricevuto non è valido. |
56 |
SNIAUTH_ERRST_SSPIHANDSHAKE_OOM |
Allocazione di memoria non riuscita durante la convalida del nome SPN ricevuto. |
57 |
SNIAUTH_ERRST_SSPIHANDSHAKE_SERVICEBINDINGS_WSASTRINGTOADDRESSFAILEDFORIPV6 |
WSAStringToAddress non è stato in grado di convertire l'elemento Indirizzo IP del nome SPN ricevuto in una struttura dell'indirizzo. Il codice di errore di Windows indica la causa del problema. |