sql server 与 IIS 中权限设置的问题。高分100分!求高手解答!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server 与 IIS 中权限设置的问题。高分100分!求高手解答!相关的知识,希望对你有一定的参考价值。

参考技术A 打开IIS管理器
点击左边应用程序池节点,查看刚才使用的应用程序池的高级属性(这里是DafaultAppPool)
启用32位应用程序选项设为True
接下来修改一些文件夹的访问权限
C:\Windows\temp
(典型路径,请根据实际安装路径确定)
C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp
给上面两个文件夹添加Authenticated
Users的完全访问权限
如果还不足够,继续给C:\Inetpub\wwwroot\App_Data
添加Authenticated
Users的完全访问权限
参考技术B 首先你的数据库版本是不是SQL2000,如果是的话原因很可能是因为没有安装SQL2000的SP4补丁。数据库的故障跟IIS无关,一般都是直接和数据库本身配置以及你的ASP连接数据库的代码有关。

与 IIS、Firefox 和 SQL Server 集成的 Windows 身份验证

【中文标题】与 IIS、Firefox 和 SQL Server 集成的 Windows 身份验证【英文标题】:Integrated Windows Authentication with IIS, Firefox and SQL Server 【发布时间】:2009-04-09 07:48:07 【问题描述】:

我有一个网站在我的本地主机上的 IIS 上运行。此网站已将目录安全设置为仅允许集成 Windows 身份验证。它是 Intranet 的一部分,需要通过我们的域帐户进行身份验证。

然后我在连接字符串中使用 Integrated Security = SSPI 连接到 SQL Server。

这适用于 Microsoft Internet Explorer,它会在我登录到域时自动对我进行身份验证,并且我可以看到 logon_user 是我的域帐户,并且 SQL Server 连接字符串也可以正常工作。

但是,当我使用 Firefox 登录时,情况有所不同。

首先,我被提示进行身份验证,这很好且正确,因为 Firefox 没有配置为足够信任 localhost 以自动发送凭据(实际上我已经知道如何引入这种信任,这不是问题) .然后我登录,这再次很好,只要我输入域帐户详细信息一切都很好。事实上,一两个调试语句表明 login_user 仍然是我的域帐户,一切都很好。

但是,当我连接到 SQL Server(它在远程服务器上运行,我的域帐户拥有完整的系统管理员权限)时,我收到以下错误:

Microsoft OLE DB Provider for SQL Server (0x80040E4D)
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.

这表明身份验证堆栈中有问题,由于某种原因,当我使用来自 firefox 的 Windows 身份验证进行身份验证时,IIS 没有作为经过身份验证的帐户运行。

这在使用谷歌浏览器时也可以正常工作。

有什么建议吗?

【问题讨论】:

您是否在同一台机器上运行 SQL 和 IIS? 不,SQL Server 位于远程安全服务器上。 【参考方案1】:

AS noted by Pontus Gagge,IIS 需要将 Kerberos 票证传递给 SQL Server。这足以让我的 Google-fu 朝着正确的方向前进。

Firefox 支持 Kerberos,但是,您必须告诉它它信任哪些域来发送 Kerberos 令牌。

    打开火狐 在地址栏输入:about:config Firefox3.x 及更高版本要求您同意谨慎行事。 配置页面加载后,在过滤框中输入:network.negotiate-auth 修改network.negotiate-auth.trusted-uris,双击行并输入yourdomain.com 可以添加多个域,用逗号分隔,例如 yourdomain.com、yourotherdomain.com

注意:与gbn 的solution 相同,后者只是将firefox 配置为不提示您在登录时输入域帐户详细信息。

此外,如果您已经尝试在当前 Firefox 会话中通过堆栈进行身份验证,则需要重新启动 Firefox 才能使其正常工作。

【讨论】:

作为记录,在使用 localhost 作为域的 Firefox Developer Edition 中进行这些更改后,我仍然遇到问题。我还必须在下面执行 gbn 的解决方案才能通过“登录失败...”消息。这是在最终起作用的两个地方添加 URI 的组合。我确认删除一个或另一个会导致问题再次出现。 对不起,我说得太早了。仔细检查后,我发现我唯一需要设置的是 network.automatic-ntlm-auth.trusted-uris。【参考方案2】:
    打开火狐 在地址栏输入:about:config Firefox3.x 及更高版本要求您同意谨慎行事。 配置页面加载后,在过滤框中输入:network.automatic 通过双击行修改network.automatic-ntlm-auth.trusted-uris并输入http://www.replacewithyoursite.com 可以添加多个站点,用逗号分隔它们,例如http://www.replacewithyoursite.com、http://www.replacewithyourintranetsite.com

我还为 Intranet 站点使用 IEtab 插件

【讨论】:

我知道如何做到这一点,我顺便避开了它,这不是问题。事实上,当我通过身份验证时,它不会将其传递给 SQL Server。【参考方案3】:

IIS 需要将Kerberos 票证传递给 SQL Server,此方案才能正常工作。 MSIE 正在获取工作站会话票,而 Firefox 正在协商它自己的身份验证(而不是 Kerberos)。

查看例如this dense blog post 作为了解所需内容的起点。我不确定 FF 是否支持 MS-Kerberos。

请注意,如果您的版本或信任配置错误,即使获得 MSIE->IIS->SQL Server 身份验证也可能会很棘手...

【讨论】:

以上是关于sql server 与 IIS 中权限设置的问题。高分100分!求高手解答!的主要内容,如果未能解决你的问题,请参考以下文章

配置 IIS7 与 SQL Server 的集成验证

将 SQL CE 4 部署到 IIS 7 - 需要特殊权限?

windows server 2012通过cwRsync做双机互为备份,iis无法写入文件的问题

组件服务 IIS admin server 无法进行设置

sql server 报告服务虚拟文件夹托管在哪里?

SQL server权限管理和备份实例