【问题标题】:ASP.NET auth using Windows Authentication for intranet使用 Windows 身份验证进行 Intranet 的 ASP.NET 身份验证
【发布时间】:2017-04-17 11:34:49
【问题描述】:

我知道这个问题被问了很多,但我一直没有找到可行的解决方案。

我正在尝试创建一个要在其中使用 Windows 身份验证的 Intranet 网站。但由于某种原因,我无法进行身份验证。

我在 MSDN、Stack Overflow、博客等上进行了广泛搜索,并尝试了建议的解决方案 - 无济于事。

这是我正在使用的:

  • IIS 10.0.14393.0(真正的 IIS,不是 express)
  • Windows 10 (1607)
  • .NET Framework 4.6.1
  • ASP.NET MVC 5.2.3

在 Visual Studio 中,我创建了一个新的空 ASP.NET Web 应用程序并在 MVC 中打勾。然后我添加了一个非常简单的(Hello World)控制器、模型和视图。

最后,我在 system.web 部分的 web.config 中添加了以下内容(许多人声称这是正确的解决方案):

<authentication mode="Windows"/>
<authorization>
  <allow users="DOMAIN\USER"/>
  <deny users="*"/>
</authorization>

在 IIS 中,我创建了一个新网站,将其指向 Web 应用程序文件夹,并设置了一个主机名,并将其添加到“hosts”文件中。

然后我启用了“身份验证”部分下的“Windows 身份验证”功能。

在 Internet Explorer(或 Firefox 或 Chrome)中,我使用到控制器的路由导航到网站,然后系统会提示我输入凭据。我输入域用户的凭据,但我被拒绝访问。

有些人声称也应该启用 IIS 中的“匿名身份验证”,但对我来说这根本没有帮助。同样的问题。

此外,有些人声称它有助于转到“提供程序”以获取“Windows 身份验证”并将它们重新排序为:NTLM、协商。对我来说没有任何改变。

然后我尝试将 web.config 中的授权更改为:

<allow users="*"/>

也无济于事。

这就像 auth-thing 根本不与 AD 对话。

根据描述的场景,有人知道如何正确设置吗?

更新(2016 年 12 月 8 日): 我找到了 Scott Allen 的一段复数视频(引用自 asp.net/mvc 网站),他在其中解释了 MVC5 的不同身份验证选项,当涉及使用 Windows 身份验证创建 Intranet 站点时,事实证明应该这样做就像我在这个问题中描述的一样。唯一的事情是,当我尝试它时(我使用了 MVC 的 VS 模板并选择了 Windows 身份验证),它只适用于 IISExpress - 而不是真正的 IIS(即使在同一台机器上并且 IISExpress 和 IIS 设置都使用 Windows 身份验证而不是允许匿名)。太令人沮丧了。

【问题讨论】:

    标签: asp.net iis windows-authentication


    【解决方案1】:

    你不应该在 ASP.Net MVC 中使用&lt;authorization&gt; 标签。它适用于基于路径的 ASP.Net Web 表单,而 ASP.Net MVC 则适用于控制器、动作和路由。

    在 ASP.Net MVC 中,通过 AD 对用户进行身份验证的方法很少。我个人喜欢使用OWIN Middleware

    它的片段很少,所以我在 GitHub AspNetMvcActiveDirectoryOwin 中创建了一个示例项目。你可以 fork 并立即进行测试。

    以下三个是主要的类——

    1. AccountController

    2. ActiveDirectoryService

    3. OwinAuthenticationService

    【讨论】:

    猜你喜欢
    • 2010-10-13
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多