gpt4 book ai didi

asp.net - 为什么 IIS 中的 Windows/集成身份验证不将用户凭据传递给 SSRS 和 SQL?

转载 作者:行者123 更新时间:2023-12-04 09:42:33 25 4
gpt4 key购买 nike

问题 :
在 ASP.NET 4.0 中,我使用我的 SSRS 2005 服务器的 ReportService2005.asmx Web 服务以获取报告列表。同样在 .NET 中,我使用 Entity Framework 与我的 MS-SQL 2005 数据库进行通信。当我使用 Visual Studio Development Server 作为我的 Web 服务器时,对 SSRS 和 SQL 的调用工作正常。但是当我切换到 IIS 5.1 时,SSRS 和实体代码都会产生错误。我在 IIS 中仅使用 Windows/集成身份验证。

错误 :
对于 SSRS,我得到 The request failed with HTTP status 401: Unauthorized.
对于 Entity Framework ,我得到 Login failed for user ''. The user is not associated with a trusted SQL Server connection.
尝试的解决方案 :
在 Web.Config 中,我添加了 <identity impersonate="true" />并且修复了 Entity Framework 错误但不是 SSRS 错误。我扩展了identity引用包括我的用户名和密码,并修复了所有错误。

问题 :
为什么指定我的用户名和密码可以修复错误,为什么 SQL 说我没有指定用户名 ( '' )?我认为 Windows 身份验证会自动模拟当前用户。如何在不将“服务”帐户硬编码到 web.config 的情况下解决此问题?

最佳答案

Windows 或集成身份验证意味着使用 Windows 凭据(或 token )识别用户,但这并不意味着该请求正在该用户下运行。 ASP.NET 运行时将在工作进程(应用程序池)身份下执行请求,除非您将其配置为模拟其他身份。

因此,当您使用开发服务器访问站点时,服务器以您的身份运行,因此对 SSRS 和 Sql Server 的访问是在您的身份下完成的,并且可以正常工作。

当您在 IIS 下加载站点时,ASP.NET 请求将在为应用程序池配置的任何身份下运行。通常,此身份是本地用户,因此将拒绝访问 SSRS 或 Sql Server 等网络资源。添加 <identity impersonate="true" username="your name" ../> ,ASP.NET 将在您的身份下运行请求,这应该适用于 SSRS 和 Sql Server。

这里奇怪的案例是 <identity impersonate="true" /> - 在此设置下,ASP.NET 将模拟当前经过身份验证的 Windows 身份。但是,为了使其正常工作,您必须在集成身份验证上配置 IIS 和 ASP.NET 并拒绝匿名访问(在 ASP.NET 和 IIS 中)。如果不这样做可能会导致无法验证当前用户的身份,并且请求将在匿名用户的身份下运行(如 IIS 中的配置)。如果您在 IIS 中而不是在 ASP.NET 中标记了集成身份验证,那么身份将不会传递给 ASP.NET 请求。您需要检查您的环境以查看您所面临的确切情况,但最终结果是您的 ASP.NET 请求在可以访问 SQL Server 但不能访问 SSRS 的凭据下运行。

关于asp.net - 为什么 IIS 中的 Windows/集成身份验证不将用户凭据传递给 SSRS 和 SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7439525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com