代码改变世界

转 修复moss本机访问SharePoint 401.1 HTTP错误(MOSS 2007迁移后做DNS映射后出现的错误)

2009-12-22 17:57  Leason Li  阅读(548)  评论(0编辑  收藏  举报

 原文链接

环境:

DC Server         :        DC01.jerry.local       win03 sp1

MOSS Server:            moss.jerry.local        win03 sp1 + moss sp2

Web application mapping:       www.jerry.local 通过ISA发布到外网

症状:

有时候我们在域环境中创建好Web应用程序后,在moss本机确无法正常访问,返回HTTP 401.1错误。注意,Web应用程序支持匿名访问时,可以打开页面,但无法正常使用域账号登陆,输入三次用户名和密码后提示401.1出错页面,所发出的三次Web 服务请求不会在 IIS 日志中产生 HTTP 401 消息。而此时从域内其他机器或域外访问都一切都正常。

原因:

       如果安装 Microsoft Windows Server 2003 Service Pack 1 (SP1),则会出现此问题。Windows Server 2003 SP1 包括一个环回检查安全功能,用于帮助防止计算机受到反射攻击。因此,如果所使用的 FQDN 或自定义的主机标头与本地计算机名称不匹配,则会出现身份验证失败。所以域内用moss.jerry.local访问正常,换成www.jerry.local则访问失败,

修复方法:

方法 1:禁用环回检查

请按照下列步骤操作:

1.       依次单击开始运行,键入 regedit,然后单击确定

2.       在注册表编辑器中,找到并单击下面的注册表项: HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Control"Lsa

3.       右键单击“Lsa”,指向新建,然后单击“DWORD

4.       键入 DisableLoopbackCheck,然后按 Enter

5.       右键单击“DisableLoopbackCheck”,然后单击修改

6.       数值数据框中,键入 1,然后单击确定

7.       退出注册表编辑器,然后重新启动您的计算机

方法 2:指定主机名

要指定映射到环回地址并且可以连接到计算机上的网站的主机名,请按照以下步骤进行操作:

1.       依次单击开始运行,键入 regedit,然后单击确定

2.       在注册表编辑器中,找到并单击下面的注册表项: HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Control"Lsa"MSV1_0

3.       右键单击“MSV1_0”,指向新建,然后单击多字符串值

4.       键入 BackConnectionHostNames,然后按 Enter

5.       右键单击“BackConnectionHostNames”,然后单击修改

6.       数值数据框中,为本地计算机上的网站键入一个或多个主机名,然后单击确定

7.       退出注册表编辑器,然后重新启动 IISAdmin 服务。

上述为微软提供方法,经测试成功

 

还有一篇老外给的方法,通过修改IIS网站所对应的认证方式来解决内网访问的问题。

 

Occasionally after you install Sharepoint you can get the 401.1 HTTP error when you try to navigate to Sharepoint on the same domain, but when you try to access for an external network, everything seems to work fine. This happens 'cause when you are on the same domain IIS believe that you should be authenticating using Kerberos Authentication, and, for external machines, IIS try to use NTLM first. Both Kerberos and NTLM Authentication are part of the "Integrated Windows Authentication" option on IIS. As you probally didn't want to use Kerberos authentication, you haven't edited the IIS metabase to configure the SPN (service principal name) account, and, because of this, the Kerberos Authentication will always fail. To solve this issue, you can disable the Kerberos for the website, and use just the NTLM authentication for both internal and external requests. To do so follow this steps:

  1. Open the IIS Manager
  2. Expand the local computer and then click on Web Sites
  3. On the sites list, find the web site you want to change and take note of the Identifier column
  4. open the command prompt and navigate to the following folder: "C:"inetpub"adminscripts"
  5. run the following command:

adsutil GET W3SVC/YOURID/Root/NTAuthenticationProviders


change YOURID for your the ID of the website you want to change

  1. If the command returns "Negotiate,NTLM" then Kerberos is active for the website, to change this, just run the same command again, but with the SET parameter instead of GET and with the NTLM parameter:

adsutil SET W3SVC/SEUID/Root/NTAuthenticationProviders NTLM