Windows身份验证如何真正起作用? Web.config似乎还不够

时间:2018-02-14 16:38:07

标签: asp.net windows authentication web-config

尝试修复Windows身份验证。目标:Windows身份验证。使用Firefox时,应显示登录对话框,而使用Internet Explorer时,Windows用户名和密码应自动转到Web服务器。

我使用Empty模板设置了一个非常小的Web应用程序项目。 Web.config看起来像这样:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5"/>
    <httpRuntime targetFramework="4.5"/>
    <authentication mode="Windows" />
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" .../>
      <compiler language="vb;vbs;visualbasic;vbscript" ..."/>
    </compilers>
  </system.codedom>
</configuration>

在FF或IE中运行此站点会产生401 Unauthorized响应,而不是登录对话框。为什么呢?

然后我创建了另一个新的Web应用程序项目,现在将WinForms模板和Authentication设置为Windows。这会创建一些半有趣的假内容,包括带有菜单的页眉和显示登录用户的窗口名称。

在web.config中,我将授权更改为:

<allow users="*"/>

在FF中运行此站点会显示一个登录对话框,在IE中它会在标题中显示带有我的Windows用户名的页面。

现在我改为:

<authentication mode="None" />

在FF中运行此站点显示登录对话框,而我希望只需看到该页面而无需登录。使用IE浏览器,页面显示标题中没有我的Windows用户名。

我的结论是,设置身份验证不仅仅是web.config中的那两个地方。如果我对此了解得更多,我可以在我的真实网络项目中解决一些类似的问题。请帮助!

1 个答案:

答案 0 :(得分:0)

经过一夜好眠,我有了搜索Web服务器配置的想法。事实证明VS2015使用IIS Express。在SO上,我发现IIS Express配置文件位于解决方案的.vs目录中,其中New Project模板写道禁用了匿名访问。这解释了Firefox中的登录对话框,即使web.config具有Authentication Mode = None。

我还从Hanselman找到了一些有趣的信息:在VS2015解决方案资源管理器中,按项目上的F4查看您在“属性页”中找不到的一些项目。例如。匿名身份验证已启用/已禁用,但这似乎与.vs中的配置无关?

似乎某些事情不能简单化。我使用Apache Web服务器并且被大量的设置所吓倒,但至少每个都被清楚地记录下来了。 Windows有着使用GUI工具使用户友好的声誉,因此我觉得仍然不得不处理隐藏目录.vs中xml配置文件中记录较少的文档。