Compartir a través de


IReportServerCredentials (Interfaz)

Permite a las aplicaciones proporcionar credenciales para la conexión con un servidor de informes de Reporting Services.

Espacio de nombres:  Microsoft.Reporting.WebForms
Ensamblado:  Microsoft.ReportViewer.WebForms (en Microsoft.ReportViewer.WebForms.dll)

Sintaxis

'Declaración
Public Interface IReportServerCredentials
public interface IReportServerCredentials
public interface class IReportServerCredentials
type IReportServerCredentials =  interface end
public interface IReportServerCredentials

El tipo IReportServerCredentials expone los siguientes miembros.

Propiedades

  Nombre Descripción
Propiedad pública ImpersonationUser Obtiene o establece el objeto WindowsIdentity del usuario que se suplantará cuando el control ReportViewer se conecte con un servidor de informes.
Propiedad pública NetworkCredentials Obtiene o establece las credenciales de red utilizadas para la autenticación con el servidor de informes.

Arriba

Métodos

  Nombre Descripción
Método público GetFormsCredentials Proporciona información que se utilizará para conectarse con el servidor de informes que está configurado para la autenticación de formularios.

Arriba

Comentarios

Al implementar la interfaz IReportServerCredentials, es importante saber que el control ReportViewer almacena la instancia del objeto en una sesión ASP.NET.Si la sesión ASP.NET del servidor se almacena fuera de proceso, como en Reporting Services, la clase debe marcarse como Serializable para que pueda serializarse para el almacenamiento.

Aunque no es necesario, sí que es aconsejable implementar la interfaz IReportServerCredentials como un objeto sin estado.Esto evita que se almacene la información de credenciales, como el nombre del usuario y la contraseña, cuando se serializa el objeto.

Para obtener más información sobre cómo especificar credenciales con el control ReportViewer, vea Especificar las conexiones y las credenciales del control de servidor web ReportViewer.

Ejemplos

En el ejemplo siguiente se proporciona una implementación de IReportServerCredentials marcada como Serializable para que pueda serializarse para el almacenamiento.La información de credenciales se obtiene del archivo web.config.Esta implementación se conectará con el servidor de informes con las mismas credenciales para todas las solicitudes de cliente.

Antes de utilizar el ejemplo, es preciso agregar tres pares clave-valor al archivo web.config de la aplicación en el bloque appSettings: MyReportViewerUser, MyReportViewerPassword y MyReportViewerDomain.Estos valores corresponden al nombre de usuario, la contraseña y el dominio que se usarán para conectar con el servidor de informes.

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

Vea también

Referencia

Microsoft.Reporting.WebForms (Espacio de nombres)

IReportServerConnection2