【问题标题】:IIS and SQL Server Windows Authentication in an ASP.NET applicationASP.NET 应用程序中的 IIS 和 SQL Server Windows 身份验证
【发布时间】:2011-08-14 05:35:41
【问题描述】:

我已经设置了 3 个虚拟机:

  • (A) Windows 2008 R2 中的 Active Directory。
  • (B) Windows XP SP3 中的 Microsoft SQL Server 2008 Express。
  • (C) Windows XP SP3 中的 IIS。

SQL Server 和 IIS 都加入了域,但主机 PC 没有。我还在 SQL Server 中创建了一个具有管理员权限的域管理员用户。我可以从彼此之间以及从托管 VM 的 PC ping/访问所有 VM。我可以毫无问题地在 IIS VM 内的 SQL Server Management Studio 中使用 Windows 身份验证连接到 SQL Server VM。

我在 IIS VM 中托管的 ASP.Net 应用程序中创建了一个非常简单的应用程序,该应用程序在 SQL Server VM 中打开了一个数据库连接。我已将网站设置为通过 Windows 身份验证进行身份验证。这是我的连接字符串:

Server=DATABASE;Database=HAP;Trusted_Connection=True;

代码如下:

SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

using(connection) {
    connection.Open();
}

我还在 AD 中为 IIS VM 设置了“信任此计算机以委托给任何服务(仅限 Kerberos)”。

它抛出 “登录失败。登录来自不受信任的域,不能用于 Windows 身份验证。”异常。如果我将连接字符串更改为:

Server=DATABASE;Database=HAP;User ID=sa;Password=connectsql;

应用程序运行良好。

我确实需要它通过 Windows 身份验证 通过 SQL Server 身份验证进行身份验证。

注意: IIS 提示用户输入他的 Windows 凭据。

【问题讨论】:

    标签: asp.net iis active-directory windows-authentication


    【解决方案1】:

    我不清楚您是否打算将应用程序作为登录用户进行身份验证,或者您是否只是想让 asp.net 工作进程通过 AD 进行身份验证。

    如果您希望用户使用他们的帐户进行身份验证,那么您需要在网络配置中设置“imperasonate=true”。这会对性能产生影响,但这可能没问题。

    如果你只是想通过工作进程进行身份验证,那么你需要将工作进程的身份设置为域帐户。

    【讨论】:

    • 我希望用户使用他们的帐户进行身份验证。我尝试设置 但抛出了一个不同的异常:用户“NT AUTHORITY\ANONYMOUS”登录失败。我还缺少什么?
    • @acemate433s - 您已开启匿名登录。在 IIS 管理器中,右键单击站点(或应用程序名称)并单击目录安全选项卡,然后单击匿名访问和身份验证控制中的编辑。取消选中匿名访问,然后单击基本身份验证,然后确保默认域是默认域(或输入您的完整域名)。还必须确保用户是具有读取站点中文件的文件权限的组的成员,并且用户必须具有对 IIS 服务器的“本地登录”权限。最后,使用 XP 有 10 个用户同时限制
    • 成功了!但是我想在 IIS 中使用 Windows 身份验证而不是基本身份验证。我必须更改哪些设置?
    • 您正在使用 Windows 身份验证。您看到的是“集成”身份验证,并且仅适用于客户端连接到域的 Intranet(您说它们没有)。
    猜你喜欢
    • 2011-05-07
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 2013-07-24
    相关资源
    最近更新 更多