扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
来源:IT专家网 2008年9月22日
关键字: 操作系统 身份认证 SQL Server Windows
问题
在之前的技巧中,您讨论了由于在Active Directory中存在大量的组,需要超越MaxTokenSize来容纳更大的Kerberos tokens。与此同时,我们也注意到MaxTokenSize需要做出相应调整,这是由于使用Windows集成身份认证(Windows Integrated Authentication)的web应用程序也出现了启动失败的问题,其中包括SQL Server Reporting Services。我就职的公司做出了必要的改动并重新启动了SQL和Web服务器。启动后,尽管SQL Server Management Studio的问题解决了,但是我们的Web应用程序仍然存在问题。请问还需要再做什么改动呢?
专家解答
先前关于Kerberos Token sizes的方法解决了在以下目录的一段注册表中修改MaxTokenSize的问题:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters。不幸的是,当使用Windows集成身份验证(Windows Integrated Authentication)连接到SQL Server时,这并不是预设大小的唯一的地方。额外的两个值是MaxFieldLength 和MaxRequestBytes。与MaxTokenSize不同的是,当问题影响到web应用程序时,它呈现出不同的一点。默认情况下,Windows集成身份验证(Windows Integrated Authentication)在Internet Explorer中启用,在Internet Options | Advanced界面中显示如下:
图一
当用户尝试用别名或者DNS名称访问网页时,DNS解析将尝试进行。因为规模较大的Kerberos token大小超过默认的MaxFieldLength,你将立即得到错误的信息。这与由于在输入地址和接收“网页无法显示”的错误信息存在时间差而导致一个网页无法找到的情况不同。这个难题中有趣的部分在于,如果尝试要么用主机名要么用别名来访问网页,它是不会成功的。尽管如此,网页可以通过IP地址访问。然而,在网页加载时任何SQL查询的执行都会失败。
当遇到网站错误时,Internet Explorer的默认行为是显示用户界面友好的信息。你可以在如下显示的Internet Explorer中关闭这种行为。
图二
这些用户界面友好的讯息将提供用于解决问题的信息。一旦你关掉用户界面友好的信息,你将看到如下的信息:
图三
如上所述,额外注册表项需要超越这些默认值。注册表项的位置取决于使用的Internet Information Server (IIS)的版本。
IIS version Registry location
IIS 5.0 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w3svc\parameters
IIS 6.0 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
Internet Information Services 5.0
在IIS 5.0中,注册表项要求是MaxClientRequestBuffer DWORD项。Microsoft建议的DWORD值是32768。
Internet Information Services 6.0
在IIS 6.0中要求有两个注册表项。第一个是MaxFieldLength DWORD项。根据Microsoft的建议,DWORD值是65534。第二个是MaxRequestBytes DWORD,Microsoft的建议值是500000。
一旦注册表项完成了,IIS Admin and dependent services需要重启,但是服务器不一定需要重启。原来的问题在Outlook Web Access中被发现,而补救方法在一篇有关Outlook Web Access的知识库文章中有所描述。当采用Kerberos身份验证时,无论是使用什么技术,对web应用程序的补救方法是相同的。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者