2

レポートサーバーへの接続にReportViewerを使用しています。Windows認証は正常に機能しますが、クレデンシャルを使用してレポートサーバーを認証すると、次のエラーが発生しました。

リクエストはHTTPステータス401:Unauthorizedで失敗しました。

これらの資格情報を受け入れるようにレポートサーバーを構成する必要があることはわかっていますが、実際にはそれが何であるかはわかりません。はい、msdnとスタックの質問も確認しました。私はSSRSの完全な初心者であり、レポートサーバーをWebアプリケーションに統合したいと考えています。アプリケーションページで行ったことは次のとおりです。

protected void Page_Load(object sender, EventArgs e)
{
    //    if (!IsPostBack)
    //    {
            ReportViewer1.ServerReport.ReportServerCredentials =
             new MyReportServerCredentials();
        //    ReportViewer1.ServerReport.Refresh();
        //}
    }
}

[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)
    {
        // not use FormsCredentials unless you have implements a custom autentication.
        authCookie = null;
        userName = null;
        password = null;
        authority = null;

        // Not using form credentials
        return false;
    }
}

そして、RsReportServer.configファイル内で<authentication>ノードを変更して次のように置き換えました。

<Authentication>
      <AuthenticationTypes>
             <Custom />
      </AuthenticationTypes>
      <EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>

そして、web.configreportserverのファイルで、認証をフォームに変更し、偽装をfalseに変更しweb.config、reportmanagerのファイルでも同じことを行いました。

足りないもの。または私は正しいですか?

また、CustomSecurity Extension用語で何かをする必要があると思いますか?

4

2 に答える 2

0

[スタート] -> [すべてのプログラム] -> [Microsoft SQL Server 2008] -> [構成ツール] -> [Reporting Services Configuration Manager (SSRS)] を使用して、(サーバー上にある) SSRS サービスを構成する必要があります。

http://msdn.microsoft.com/en-us/library/ms156305.aspx

于 2013-01-10T06:45:04.840 に答える
0

検索中

http://blogs.msdn.com/b/bimusings/archive/2005/12/05/500195.aspx

これは古いものですが、これを機能させるためのチェックリストの良いリファレンスになるはずです。

于 2012-09-27T14:58:45.253 に答える