Freigeben über


IReportServerCredentials-Schnittstelle

Ermöglicht Anwendungen die Bereitstellung von Anmeldeinformationen für eine Verbindung mit einem Reporting Services-Berichtsserver.

Namespace:  Microsoft.Reporting.WebForms
Assembly:  Microsoft.ReportViewer.WebForms (in Microsoft.ReportViewer.WebForms.dll)

Syntax

'Declaration
Public Interface IReportServerCredentials
'Usage
Dim instance As IReportServerCredentials
public interface IReportServerCredentials
public interface class IReportServerCredentials
type IReportServerCredentials =  interface end
public interface IReportServerCredentials

Der IReportServerCredentials-Typ macht folgende Elemente verfügbar.

Eigenschaften

  Name Beschreibung
Öffentliche Eigenschaft ImpersonationUser Ruft die System.Security.Principal.WindowsIdentity des Benutzers ab, dessen Identität angenommen werden soll, bzw. legt diese fest, wenn das ReportViewer-Steuerelement eine Verbindung mit einem Berichtsserver herstellt.
Öffentliche Eigenschaft NetworkCredentials Ruft die für die Authentifizierung am Berichtsserver verwendeten Netzwerkanmeldeinformationen ab bzw. legt diese fest.

Zum Anfang

Methoden

  Name Beschreibung
Öffentliche Methode GetFormsCredentials Stellt Informationen bereit, die zum Herstellen einer Verbindung mit einem Berichtsserver verwendet werden, der für die Formularauthentifizierung konfiguriert ist.

Zum Anfang

Hinweise

Beachten Sie, dass beim Implementieren der IReportServerCredentials-Schnittstelle das ReportViewer-Steuerelement die Instanz des Objekts in ASP.NET-Sitzung speichert. Wenn die ASP.NET-Sitzung des Servers im Out-Of-Process-Modus gespeichert wird, wie beispielsweise in Reporting Services, muss die Klasse als Serializable markiert werden, damit sie für die Speicherung serialisiert werden kann.

Obwohl dies nicht erforderlich ist, empfiehlt es sich außerdem, die IReportServerCredentials-Schnittstelle als statusfreies Objekt zu implementieren. Dadurch wird verhindert, dass Anmeldeinformationen wie z. B. Benutzername und Kennwort beim Serialisieren des Objekts gespeichert werden.

Weitere Informationen zur Angabe von Anmeldeinformationen mit dem ReportViewer-Steuerelement finden Sie unter Angeben von Verbindungen und Anmeldeinformationen für das ReportViewer-Webserver-Steuerelement.

Beispiele

Im folgenden Beispiel wird eine Implementierung von IReportServerCredentials bereitgestellt, die als Serializable markiert wurde, damit sie für die Speicherung serialisiert werden kann. Die Anmeldeinformationen werden aus der Datei Web.config abgerufen. Diese Implementierung stellt für alle Clientanforderungen eine Verbindung mit den gleichen Anmeldeinformationen zum Berichtsserver her.

Vor der Verwendung dieses Beispiels müssen drei Schlüsselwertpaare zum appSettings-Block der Datei Web.config der Anwendung hinzugefügt werden: MyReportViewerUser, MyReportViewerPassword und MyReportViewerDomain. Diese Werte entsprechen dem Benutzernamen, dem Kennwort und der Domäne, die für die Verbindung mit dem Berichtsserver verwendet werden.

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

Siehe auch

Verweis

Microsoft.Reporting.WebForms-Namespace

IReportServerConnection2