レポートサーバーへの接続に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.config
reportserverのファイルで、認証をフォームに変更し、偽装をfalseに変更しweb.config
、reportmanagerのファイルでも同じことを行いました。
足りないもの。または私は正しいですか?
また、CustomSecurity Extension用語で何かをする必要があると思いますか?