0

我正在尝试将 Active Directory 身份验证添加到多年前构建的帮助台系统中。我们将逐步升级整个系统。我首先创建一个将托管登录的 MVC2 应用程序,然后我的计划是将当前功能带入 MVC,因为我们还添加了新功能。

但是登录是整个事情的基础。我们需要审计,所以我们需要知道谁在系统中。

我已经阅读了文章、其他 stackoverflow 帖子,并遵循了一些 MS 演练。我能够让它作为一个 ASP 网站工作,但是当它是一个 MVC 应用程序时,我似乎无法得到它。ASP 应用程序需要添加大量的方法,而我读到的所有内容听起来都像是 MVC 应该简单得多。

这是我的 IIS 设置和我对 web.config 所做的修改:

IIS 身份验证

  • 匿名:已禁用
  • ASP.NET 模拟:已禁用
  • 表格:已启用
  • 窗户:已禁用

    ……

我不断收到以下错误:

HTTP Error 401.2 - Unauthorized You are not authorized to view this page due to invalid authentication headers.

最终目标是在主页上对用户进行身份验证。如果他们无法通过身份验证,请强制登录。

编辑:启用匿名身份验证

我启用了匿名身份验证以查看是否有任何潜在错误可能是问题的根源。我收到以下错误:

The container specified in the connection string does not exist.

它在 的定义中发现错误MyADMembershipProvider

<add name="MyADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ADConnectionString" />

我将连接字符串更改为以下内容:

<add name="ADConnectionString" connectionString="LDAP://server.domain.com"/>

那确实成功地重定向到登录页面,但它没有自动对我进行身份验证。当我再次设置AnonymousDisabled,我又回到了原来的错误。

我想我在这里遗漏了一些我没有从我正在阅读的材料中获得的基本知识。

编辑:身份验证根本不起作用

我认为可能值得添加身份验证根本不起作用。MembershipService.ValidateUser总是返回假。

4

1 回答 1

0

我认为解决方案是身份验证类型。最初,我使用的是以下内容:

IIS 身份验证

  • 匿名:已禁用
  • ASP.NET 模拟:已禁用
  • 表格:已启用
  • 窗户:已禁用

在我的Web.config文件中,我使用了Forms身份验证。显然对于 Active Directory 身份验证,类型必须是Windows.

原来的:

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>

修改:

<authentication mode="Windows" />

<authorization>
  <deny users="?" />
</authorization>

我知道这很有效,但由于我是 MVC 的新手,我仍然可能会遗漏一些东西。

于 2013-09-04T13:26:49.287 回答