ASP.NET 中的模拟和委托(使用 SQL Server)

2024-04-22

我编写了一个简单的 ASP.NET 应用程序,它用作简单 MSSQL 数据库的前端。该应用程序可通过互联网访问。

涉及两台物理服务器:一台也运行 MSQL Server 2008 R2 的 WS2008R2 Active Directory 域控制器,以及另一台服务器,即我的应用程序所在的 Web 服务器 (WS2008R2/IIS7.5)。

我的应用程序“FooPool”的应用程序池有自己的 AD 用户身份,它在“FooUser”下运行。 FooUser没有任何访问SQL Server数据库的权限,只有我自己的个人用户帐户“MyUser”有该权限。

这个想法是,尝试访问此 Web 应用程序首先使用 IIS 执行 Windows 身份验证,然后我的 Web 应用程序使用模拟来访问 SQL Server 数据库。

但是我的应用程序不起作用。

我在没有接触 SQL Server 的情况下测试了该应用程序,只是为了测试模拟,所以我执行了 Response.Write( WindowsIdentity.GetCurrent(false).Name );它正确地显示了应用程序模拟 MyUser 而不是 FooUser。这适用于所有现代浏览器和互联网。

但一旦接触到 MSSQL Server,我就会收到错误“用户‘NT AUTHORITY\ANONYMOUS LOGON’登录失败”。但这不应该发生,因为没有用户令牌用于匿名登录。

我已经完成了作业并阅读了有关 ASP.NET 中的委派和模拟的所有内容,并且设置了委派: FooUser 帐户有一个服务主体名称设置(我将 SPN 设置为任意字符串,这样做是否正确) ?) 并在 ADUC 中标记为授权。

最后,我的连接字符串启用了 SSPI,禁用了连接池,并将网络库设置为“dbmssocn”。

我还忘记了什么?


完成工作委派的配置后,您必须启用约束委派:

  1. Open Active Directory 用户和计算机
  2. 找到 IIS 网站用于 Web 应用程序池的用户帐户并双击它
  3. 选择选项:信任此用户以委派给指定的用户
    仅限服务。
  4. 确保用户受到限制 与 MSSQLSvc 服务关联的 SPN
  5. 重新启动 IIS

http://blogs.technet.com/b/askds/archive/2008/11/25/fun-with-the-kerberos-delegation-web-site.aspx http://blogs.technet.com/b/askds/archive/2008/11/25/fun-with-the-kerberos-delegation-web-site.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET 中的模拟和委托(使用 SQL Server) 的相关文章

随机推荐