Interfaccia IReportServerCredentials

Consente alle applicazioni di fornire le credenziali per la connessione a un server di rapporti Reporting Services.

Spazio dei nomi  Microsoft.Reporting.WebForms
Assembly:  Microsoft.ReportViewer.WebForms (in Microsoft.ReportViewer.WebForms.dll)

Sintassi

'Dichiarazione
Public Interface IReportServerCredentials
'Utilizzo
Dim instance As IReportServerCredentials
public interface IReportServerCredentials
public interface class IReportServerCredentials
type IReportServerCredentials =  interface end
public interface IReportServerCredentials

Nel tipo IReportServerCredentials sono esposti i membri seguenti.

Proprietà

  Nome Descrizione
Proprietà pubblica ImpersonationUser Recupera o imposta l'oggetto System.Security.Principal.WindowsIdentity dell'utente da rappresentare quando il controllo ReportViewer si connette a un server di rapporti.
Proprietà pubblica NetworkCredentials Recupera o imposta le credenziali di rete utilizzate per l'autenticazione con il server di rapporti.

In alto

Metodi

  Nome Descrizione
Metodo pubblico GetFormsCredentials Specifica le informazioni che saranno utilizzate per la connessione al server di rapporti configurato per l'autenticazione basata su form.

In alto

Osservazioni

Quando si implementa l'interfaccia IReportServerCredentials, è importante sottolineare che il controllo ReportViewer archivia l'istanza dell'oggetto in una sessione ASP.NET. Se la sessione ASP.NET del server è archiviata esternamente al processo, ad esempio in Reporting Services, la classe deve essere contrassegnata come Serializable in modo che possa essere serializzata per l'archiviazione.

Sebbene non sia obbligatorio, si consiglia di implementare l'interfaccia IReportServerCredentials come un oggetto senza stato. In tal modo le informazioni sulle credenziali,quali nome utente e password, non saranno archiviate durante la serializzazione dell'oggetto.

Per ulteriori informazioni sull'impostazione di credenziali con il controllo ReportViewer, vedere Impostazioni di connessioni e credenziali per il controllo del server Web ReportViewer.

Esempi

Di seguito è riportato un esempio di implementazione di un'interfaccia IReportServerCredentials con contrassegno Serializable perché possa essere serializzata per l'archiviazione. Le informazioni sulle credenziali sono recuperate dal file Web.config. Questa implementazione effettuerà la connessione al server di rapporti utilizzando le stesse credenziali per tutte le richieste del client.

Prima di utilizzare l'esempio, è necessario aggiungere tre coppie chiave/valore nel blocco appSettings del file Web.config dell'applicazione: MyReportViewerUser, MyReportViewerPassworde MyReportViewerDomain. I valori corrispondono al nome utente, alla password e al dominio utilizzati per connettersi al server di rapporti.

using System;
using System.Data;
using System.Configuration;
using System.Net;
using System.Security.Principal;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Reporting.WebForms;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Init(object sender, EventArgs e)
    {
        ReportViewer1.ServerReport.ReportServerCredentials = 
            new MyReportServerCredentials();
    }
}

[Serializable]
public sealed class MyReportServerCredentials : 
    IReportServerCredentials
{
    public WindowsIdentity ImpersonationUser
    {
        get
        {
            // Use the default Windows user.  Credentials will be
            // provided by the NetworkCredentials property.
            return null;
        }
    }

    public ICredentials NetworkCredentials
    {
        get
        {
            // Read the user information from the Web.config file.  
            // By reading the information on demand instead of 
            // storing it, the credentials will not be stored in 
            // session, reducing the vulnerable surface area to the
            // Web.config file, which can be secured with an ACL.

            // User name
            string userName = 
                ConfigurationManager.AppSettings
                    ["MyReportViewerUser"];

            if (string.IsNullOrEmpty(userName))
                throw new Exception(
                    "Missing user name from web.config file");

            // Password
            string password = 
                ConfigurationManager.AppSettings
                    ["MyReportViewerPassword"];

            if (string.IsNullOrEmpty(password))
                throw new Exception(
                    "Missing password from web.config file");

            // Domain
            string domain = 
                ConfigurationManager.AppSettings
                    ["MyReportViewerDomain"];

            if (string.IsNullOrEmpty(domain))
                throw new Exception(
                    "Missing domain from web.config file");

            return new NetworkCredential(userName, password, domain);
        }
    }

    public bool GetFormsCredentials(out Cookie authCookie, 
                out string userName, out string password, 
                out string authority)
    {
        authCookie = null;
        userName = null;
        password = null;
        authority = null;

        // Not using form credentials
        return false;
    }
}
Imports System.Net
Imports System.Security.Principal
Imports Microsoft.Reporting.WebForms

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Init(ByVal sender As Object, _
                            ByVal e As System.EventArgs) _
                            Handles Me.Init

        ReportViewer1.ServerReport.ReportServerCredentials = _
            New MyReportServerCredentials()

    End Sub

End Class

<Serializable()> _
Public NotInheritable Class MyReportServerCredentials
    Implements IReportServerCredentials

    Public ReadOnly Property ImpersonationUser() As WindowsIdentity _
            Implements IReportServerCredentials.ImpersonationUser
        Get

            'Use the default windows user.  Credentials will be
            'provided by the NetworkCredentials property.
            Return Nothing

        End Get
    End Property

    Public ReadOnly Property NetworkCredentials() As ICredentials _
            Implements IReportServerCredentials.NetworkCredentials
        Get

            'Read the user information from the web.config file.  
            'By reading the information on demand instead of storing 
            'it, the credentials will not be stored in session, 
            'reducing the vulnerable surface area to the web.config 
            'file, which can be secured with an ACL.

            'User name
            Dim userName As String = _
                ConfigurationManager.AppSettings("MyReportViewerUser")

            If (String.IsNullOrEmpty(userName)) Then
                Throw New Exception("Missing user name from web.config file")
            End If

            'Password
            Dim password As String = _
                ConfigurationManager.AppSettings("MyReportViewerPassword")

            If (String.IsNullOrEmpty(password)) Then
                Throw New Exception("Missing password from web.config file")
            End If

            'Domain
            Dim domain As String = _
                ConfigurationManager.AppSettings("MyReportViewerDomain")

            If (String.IsNullOrEmpty(domain)) Then
                Throw New Exception("Missing domain from web.config file")
            End If

            Return New NetworkCredential(userName, password, domain)

        End Get
    End Property

    Public Function GetFormsCredentials(ByRef authCookie As Cookie, _
                                        ByRef userName As String, _
                                        ByRef password As String, _
                                        ByRef authority As String) _
                                        As Boolean _
            Implements IReportServerCredentials.GetFormsCredentials

        authCookie = Nothing
        userName = Nothing
        password = Nothing
        authority = Nothing

        'Not using form credentials
        Return False

    End Function

End Class

Vedere anche

Riferimento

Spazio dei nomi Microsoft.Reporting.WebForms

IReportServerConnection2