作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
*环境的细节在底部描述。
我正在尝试为报告服务构建身份验证解决方案。
在线客户应该使用我们现有的客户数据库进行身份验证,而本地管理用户可以使用简单的基本身份验证。
我已对 SSRS
进行了安全扩展使用codeplex示例和我用来发出基本挑战的方式如下
public void GetUserInfo(out IIdentity userIdentity, out IntPtr userId)
{
if (HttpContext.Current != null && HttpContext.Current.User != null)
userIdentity = HttpContext.Current.User.Identity;
else
{
HttpContext.Current.Response
.AddHeader("WWW-Authenticate", "Basic realm=\"ReportServer\"");
HttpContext.Current.Response.Status = "401 Unauthorized";
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.Close();
userIdentity = new GenericIdentity("not authorized");
}
userId = IntPtr.Zero;
}
LogonUser
方法(即直接 url 访问、投标报告部署,而不是常规用户应用程序)受到基本登录/密码弹出窗口的挑战。为了支持这一点,我制作了一个 httpmodule 如下
void IHttpModule.Init(HttpApplication context)
{
context.AuthenticateRequest += CustomAuthenticateRequest;
}
void CustomAuthenticateRequest(object sender, EventArgs e)
{
var app = sender as HttpApplication;
if (app == null) return;
var basicAuth = app.Context.Request.Headers["Authorization"];
if (!string.IsNullOrEmpty(basicAuth))
{
var loginpass = Encoding.Default.GetString(
Convert.FromBase64String(basicAuth.Replace("Basic ", ""))).Split(':');
if (loginpass.Length == 2
&& loginpass[0] == adminUser
&& loginpass[1] == adminPass)
{
app.Context.User = new GenericPrincipal(
new GenericIdentity(adminUser), null);
}
}
}
/ReportServer
时工作正常URL,我受到挑战,输入硬编码的管理员登录名/密码并登录。
/Reports
时我明白了
System.Net.WebException: The request failed with HTTP status 401: Unauthorized
/Reports
SSRS 2008-R2
改变。
web.config
我有
<authentication mode="None" />
<identity impersonate="false" />, and the entry for the httpmodule
rssrvpolicy.config
我的 httpmodule 的代码组使用 FullTrust
rsreportserver.config
我有
<AuthenticationTypes>
<Custom/>
</AuthenticationTypes>, and the entry for the security extension
SSL
已配置,但绑定(bind)是默认值
最佳答案
从错误消息来看,似乎是在呈现报表管理器的 UI 时发生了身份验证错误。请转到文件夹 c:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportManager\,找到 web.config 文件,并应用以下更改。
<authentication mode="None" />
<identity impersonate="false" />, and the entry for the httpmodule
关于reporting-services - 如何将基本身份验证质询转发到报告管理器 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11193396/
我是一名优秀的程序员,十分优秀!