【问题标题】:Authorization doesn't work with Windows Authentication in IIS授权不适用于 IIS 中的 Windows 身份验证
【发布时间】:2019-10-21 01:02:36
【问题描述】:

我尝试在 IIS 中做一些我虽然很简单的事情,但我无法让它工作。

我用简单的 html+js 页面和 web api 后端创建了一个网页。 (这意味着我有一个带有一个 JavaScript 文件的普通旧 html 页面,它使用 AJAX 回调到同一服务器以从后端获取数据。后端是用 C# 编写的,带有 .NET Framework 4.7 和当前版本的 ASP.NET . 不是 MVC,不是 .NET Core,也不是 ASP.NET Core。)

现在我想只允许本地网络上的某些用户使用此网页,我希望这可以在 web.config 文件中以某种方式进行配置。 IIS 在域中的计算机上运行,​​因此我在其 web.config 中设置 Web 应用程序以使用 Windows 身份验证并在授权部分提供允许的用户列表(用户帐户与 Web 服务器位于同一域中)。我虽然这会阻止其他用户访问网络,但显然所有经过身份验证的用户都可以显示它。因此,Windows 身份验证似乎可以正常工作,但没有执行授权检查,并且允许所有用户。在这种 html+js+webapi 的场景下,web.config 中能轻松搞定吗?

目前,web.config 中的相关部分如下所示:

  <system.web>
    <compilation targetFramework="4.7.2" />
    <httpRuntime targetFramework="4.7.2" />
    <authentication mode="Windows" />
    <authorization>
      <deny users="?" />
      <allow users="alloweduser1,alloweduser2" />
    </authorization>
  </system.web>

【问题讨论】:

  • 在 IIS 端也必须配置 Windows 身份验证,并且必须在此处禁用匿名身份验证。所以不,仅仅改变你的 web.config 文件是不可能的。
  • “在 IIS 端配置”是什么意思?
  • @LexLi 是的,匿名在那里被禁用。让我添加一个屏幕截图。

标签: iis asp.net-web-api authorization windows-authentication


【解决方案1】:

试试:

<system.web>
    <compilation targetFramework="4.7.2" />
    <httpRuntime targetFramework="4.7.2" />
    <authorization>
      <allow users="domain\alloweduser1,domain\alloweduser2" />
      <deny users="*" />
    </authorization>
  </system.web>

【讨论】:

  • 所以首先允许具有域的用户,然后拒绝 *.
猜你喜欢
  • 1970-01-01
  • 2018-07-09
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多