asp.net - 在不提示身份验证的情况下从 Web 应用程序查看报告 - Reporting Services 2017
问题描述
我的公司刚刚完成了 2017 年报告服务服务器的设置。该服务在域名下运行。在同一台服务器上,已设置 IIS 以在 ASP.NET 中运行 Web 应用程序,该应用程序将从报表查看器中提供报表服务。IIS 当前使用默认应用程序池运行。
目标:我们希望客户能够从 Web 应用程序访问报告,而无需从任何地方填写用户名和密码,无论是在 Intranet 还是 Internet 上。
在此之前,我们有具有类似设置的 ssrs 2008,但对于身份验证,我们使用匿名身份验证,这是我们想要的,他们可以从任何地方查看报告。但是从微软网站,他们说最新版本不再支持身份验证,我们尝试这样做会导致错误 401:未经授权。
目前,我正在尝试进行 kerberos 身份验证,我所做的事情:
- 报告服务帐户的 SPN。
- 报告服务帐户的授权。
- Web 应用程序 web.config 我添加了身份验证模式=“Windows”身份模拟=“真”
- 在 IIS 上,我启用了 Windows 身份验证和模拟。
但是当我尝试从 web 应用程序请求报告时,我仍然得到用户名和密码的提示,当我填写我的域和密码时,我仍然得到同样的错误 401:未经授权。
难道我做错了什么?Kerberos 真的适合我的目标吗?
提前致谢。
编辑:对不起,如果我在错误的部分发帖。我不知道这个问题的正确部分在哪里。
解决方案
当您计划在 Internet 上部署报告服务时,其击球手使用自定义身份验证而不是 Windows 身份验证。创建自定义身份验证扩展需要自定义代码和 ASP.NET 安全方面的专业知识。
如果您不想编写自定义身份验证扩展程序,则可以使用 Microsoft Active Directory 组和帐户,但您应该大大缩小报表服务器部署的范围。以下指南描述了如何支持这种情况:
创建具有只读权限的低权限域用户帐户。该帐户必须有权访问托管报表服务器的计算机。提供自定义 Web 表单,以便用户可以使用低权限域帐户登录。
创建将用户帐户映射到报表服务器文件夹层次结构中特定项目的角色分配。您可以通过选择浏览器预定义角色作为角色分配来限制对只读操作的访问。
配置报告以使用存储的凭据来获取报告的数据。如果要使用与允许访问报表服务器的帐户不同的帐户来查询外部数据源,此方法很有用。
您可以参考以下链接了解更多详情:
https://forums.asp.net/t/2095478.aspx?401+Unauthorized+SSRS+authentication+from+NET+IIS
https://forums.asp.net/t/1273411.aspx?Setting+up+Reporting+Services+with+IIS+Access+Denied+Error
推荐阅读
- prolog - 定义复杂的事实 - Einsteins Zebra
- java - 线程转储显示线程状态总是TIMED_WAITING
- java - 为什么阻塞 IO API 在早期的 Java 中不是问题?
- smartsheet-api-2.0 - 如何正确安装 Smartsheet Java SDK 并在 html 中使用它?
- android - Android studio gradle 重复类错误
- java - 如何在我的 savedInstanceState 上修复 NullPointerException 以及它发生的原因
- python - 如何将值从表单传递到 html-select
- python - 如何在安装包 phat 时修复 microsofot Visual Studio 中的错误?
- scala - 如何使用 Intellij IDE 运行 MLlib 使用示例?
- html - 如何在 Visual Studio 代码中关闭自动格式化版本:1.35.1(系统设置)