Reporting Services レポート サーバーへの接続に使用する資格情報をアプリケーションが提供できるようにします。
名前空間: Microsoft.Reporting.WebForms
アセンブリ: Microsoft.ReportViewer.WebForms (Microsoft.ReportViewer.WebForms.dll)
構文
'宣言
Public Interface IReportServerCredentials
'使用
Dim instance As IReportServerCredentials
public interface IReportServerCredentials
public interface class IReportServerCredentials
type IReportServerCredentials = interface end
public interface IReportServerCredentials
IReportServerCredentials 型は、以下のメンバーを公開しています。
プロパティ
名前 | 説明 | |
---|---|---|
![]() |
ImpersonationUser | ReportViewer コントロールがレポート サーバーに接続するときに借用するユーザーの System.Security.Principal.WindowsIdentity を取得または設定します。 |
![]() |
NetworkCredentials | レポート サーバーでの認証に使用されるネットワーク資格情報を取得または設定します。 |
Top
メソッド
名前 | 説明 | |
---|---|---|
![]() |
GetFormsCredentials | フォーム認証用に構成されているレポート サーバーへの接続に使用される情報を提供します。 |
Top
説明
IReportServerCredentials インターフェイスを実装する場合、ReportViewer コントロールによってオブジェクトのインスタンスが ASP.NET セッションに格納されることを理解しておくことが重要です。サーバーの ASP.NET セッションが Reporting Services などにアウト プロセスで格納されている場合、クラスは格納のためにシリアル化できるように Serializable としてマークされる必要があります。
また、必須ではありませんが、IReportServerCredentials インターフェイスをステートレス オブジェクトとして実装することもお勧めします。これにより、オブジェクトがシリアル化されるときにユーザー名やパスワードなどの資格情報が格納されなくなります。
ReportViewer コントロールで資格情報を指定する方法の詳細については、「ReportViewer Web サーバー コントロールの接続と資格情報の指定」を参照してください。
使用例
次の例は、格納のためにシリアル化できるように Serializable としてマークされている IReportServerCredentials の実装を示しています。資格情報は、Web.config ファイルから取得されます。この実装では、すべてのクライアント要求で同じ資格情報を使用してレポート サーバーに接続します。
この例を使用する前に、アプリケーションの Web.config ファイルの appSettings ブロックに MyReportViewerUser、MyReportViewerPassword、および MyReportViewerDomain の 3 つのキーと値のペアを追加する必要があります。これらの値は、レポート サーバーへの接続に使用されるユーザー名、パスワード、およびドメインに対応します。
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