1

我要做:

单击开始,指向管理工具,然后单击 Internet 信息服务 (IIS) 管理器。在“连接”窗格中,展开服务器名称,展开站点,然后选择要为其启用 Windows 身份验证扩展保护的站点、应用程序或 Web 服务。滚动到主页窗格中的安全部分,然后双击身份验证。在身份验证窗格中,选择 Windows 身份验证。在“操作”窗格中单击启用。单击操作窗格中的高级设置。

在 web.config 中设置后<authentication mode="Windows" />

如果我从 VS2010 启动应用程序 - 一切正常。如果否则我从 IIS 启动应用程序我有问题。请求的用户数据我输入 Computer\NameUser。然后是一个错误:

错误 HTTP 401.2 - 未经授权 由于身份验证标头的不可接受性,您无权查看此页面。

更新:

在此处输入图像描述

update2: 文件:C:\Windows\System32\inetsrv\config\applicationhost.config

<location path="windowsAuthTest">
    <system.webServer>
        <security>
            <authentication>
                <anonymousAuthentication enabled="false" userName="User" password="[enc:AesProvider:BZ7e2mkTjJL7Wo8xMm2PQKZ2biP1nKB2SjAfw9WmJoBhkMbl4DYqEJU0bzIj3CxF:enc]" />
                <windowsAuthentication enabled="true" useKernelMode="false">
                    <extendedProtection tokenChecking="None" />
                    <providers>
                        <clear />
                        <add value="NTLM" />
                        <add value="Negotiate" />
                    </providers>
                </windowsAuthentication>
            </authentication>
        </security>
    </system.webServer>
</location>
4

2 回答 2

0

之后,您访问网站的安全性,您必须为用户窗口添加权限。

于 2012-07-03T09:28:53.437 回答
0

看看我之前的回答

基本上,这意味着身份验证票与服务器的期望不匹配。

您应该强制服务器使用 NTML 或 Kerberos(取决于您的身份验证策略)。

[编辑]因为 appcmd 可能有点晦涩,这里是手动停止以强制 NTLM 身份验证。

  1. 导航C:\Windows\System32\inetsrv\config
  2. 备份、备份、备份和重新备份 applicationhost.config
  3. 确保再次备份
  4. 使用您喜欢的 xml 编辑器打开文件 applicationhost.config
  5. 搜索节点<location path="Your web site name/yourapplication">
  6. 设置正确的身份验证提供程序:



重要的部分是有<clear />节点。这将破坏从全局配置的继承。

这可以应用于整个 IIS 服务器,或特定的网站,或(如这里)特定的 Web 应用程序)。

我不确定,但我想知道这是否可以直接在应用程序的 web.config 中设置,而不是在 IIS 配置文件中设置。这个有待考证。

于 2012-07-03T09:35:26.707 回答