gpt4 book ai didi

asp.net - 使用 asp.net 的 Windows 身份验证问题

转载 作者:行者123 更新时间:2023-12-01 08:43:00 25 4
gpt4 key购买 nike

我有一个 asp.net 应用程序,它应该从两个 SQL Server 访问数据。其中一个 SQL Server 与 IIS 位于同一台机器上(我们称之为 SQLSERVER1),而另一个 SQL Server 位于另一台机器上(SQLSERVER2)。

两个 SQL 服务器都信任连接字符串。在我的 web.config 文件中,模拟已设置为 true。我在 IIS 和 web.config 中都使用 Windows 身份验证。

当我尝试从 SQLSERVER2 访问数据时,我因 user(null) 错误而登录失败。我通过 Windows 登录的用户在 SQLSERVER2 中作为 SQL 服务器帐户存在。

可能的原因是什么?

注意: 这是一个新手问题恕我直言

注意:使用的 IIS 是 6.0 (Windows 2003)。未设置为 IIS 5.0 隔离模式。

编辑:被冒充的用户是域用户

加法:

我还想声明,当我作为运行 IIS 的服务器的客户端访问它时收到此错误消息。换句话说,假设我在机器A上工作,IIS和SQLSERVER1在机器B上,SQLSERVER2在机器C上。

我在机器 B 上工作时没有收到此错误消息。这让我更加难过。

最佳答案

这绝对是一个委派问题。正如一个人指出的那样,您需要确保 Kereberos正在使用身份验证。老款NTLM不会削减它。这里有更多关于 Kerberos vs. NTLM .

简而言之,如果您有一个网络服务器和一个数据库,并且您希望网络服务器在发出数据库请求时模拟用户(这样您就可以直接在每个用户或用户组的基础上设置数据库的权限) ) 你正在执行双跳。凭据必须首先从用户的计算机传递到网络服务器,然后再传递到数据库。可以想象,数据库必须信任网络服务器“不作恶”,否则这可能是一个极其危险的安全漏洞。因此,您必须设置 Windows Server 世界中所谓的 “委托(delegate)”...

微软有一篇关于这一切的好文章here .此外,您可以查看 this 之类的文章了解如何设置它。我们经常遇到这种情况,一开始可能会很痛苦,尤其是因为作为开发人员,您可能无法直接控制服务器(尤其是生产服务器),并且您必须花费大量时间来处理楼下的服务员。

关于asp.net - 使用 asp.net 的 Windows 身份验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/190961/

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