环境:
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:
- Open the IIS Manager
- Expand the local computer and then click on Web Sites
- On the sites list, find the web site you want to change and take note of the Identifier column
- open the command prompt and navigate to the following folder: "C:"inetpub"adminscripts"
- run the following command:
adsutil GET W3SVC/YOURID/Root/NTAuthenticationProviders
change YOURID for your the ID of the website you want to change
- 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
此方法未经测试。转载自Fixing Sharepoint 401.1 HTTP errors