Partager via


Interface IReportServerCredentials

Permet aux applications de fournir des informations d'identification pour se connecter à un serveur de rapports Reporting Services.

Espace de noms :  Microsoft.Reporting.WebForms
Assembly :  Microsoft.ReportViewer.WebForms (en Microsoft.ReportViewer.WebForms.dll)

Syntaxe

'Déclaration
Public Interface IReportServerCredentials
'Utilisation
Dim instance As IReportServerCredentials
public interface IReportServerCredentials
public interface class IReportServerCredentials
type IReportServerCredentials =  interface end
public interface IReportServerCredentials

Le type IReportServerCredentials expose les membres suivants.

Propriétés

  Nom Description
Propriété publique ImpersonationUser Obtient ou définit le System.Security.Principal.WindowsIdentity de l'utilisateur dont l'identité doit être empruntée lorsque le contrôle ReportViewer se connecte à un serveur de rapports.
Propriété publique NetworkCredentials Obtient ou définit les informations d'identification réseau qui sont utilisées pour l'authentification sur le serveur de rapports.

Haut de la page

Méthodes

  Nom Description
Méthode publique GetFormsCredentials Fournit les informations qui seront utilisées pour se connecter au serveur de rapports configuré pour l'authentification par formulaires.

Haut de la page

Notes

Lorsque vous implémentez l'interface IReportServerCredentials, il est important de savoir que le contrôle ReportViewer stocke l'instance de l'objet dans la session ASP.NET. Si la session ASP.NET du serveur est stockée hors processus, comme par exemple dans Reporting Services, la classe doit être marquée comme Serializable afin de pouvoir être sérialisée pour être stockée.

Bien que cela ne soit pas obligatoire, il est conseillé d'implémenter l'interface IReportServerCredentials en tant qu'objet sans état. Cela empêche les informations d'identification, telles que le nom d'utilisateur et le mot de passe, d'être stockées lorsque l'objet est sérialisé.

Pour plus d'informations sur la façon de spécifier des informations d'identification avec le contrôle ReportViewer, consultez Spécification des connexions et des informations d'identification du contrôle serveur Web ReportViewer.

Exemples

L'exemple ci-dessous illustre une implémentation de IReportServerCredentials marquée comme Serializable pour pouvoir être sérialisée afin d'être stockée. Les informations d'identification sont récupérées à partir du fichier Web.config. Cette implémentation se connectera au serveur de rapports avec les mêmes informations d'identification pour toutes les demandes des clients.

Avant d'utiliser l'exemple, trois paires clé-valeur doivent être ajoutées dans le fichier Web.config de l'application, dans le bloc appSettings : MyReportViewerUser, MyReportViewerPassword et MyReportViewerDomain. Ces valeurs correspondent aux nom d'utilisateur, mot de passe et domaine qui seront utilisés pour la connexion au serveur de rapports.

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

Voir aussi

Référence

Espace de noms Microsoft.Reporting.WebForms

IReportServerConnection2