Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC2 Active Directory身份验证_Asp.net Mvc_Security_Active Directory - Fatal编程技术网

Asp.net mvc MVC2 Active Directory身份验证

Asp.net mvc MVC2 Active Directory身份验证,asp.net-mvc,security,active-directory,Asp.net Mvc,Security,Active Directory,我正在尝试将Active Directory身份验证添加到多年前构建的帮助台系统中。我们将逐步升级整个系统。我首先创建一个MVC2应用程序来承载登录,然后我的计划是在添加新功能的同时将当前功能引入MVC 但是登录是整个过程的基础。我们需要审计,所以我们需要知道谁在系统中 我读过一些文章,其他的stackoverflow帖子,并跟随几位微软的穿行来写这封信。我能够让它作为一个ASP网站工作,但当它是一个MVC应用程序时,我似乎无法得到它。ASP应用程序需要添加大量的方法,我读到的所有内容都让MVC

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

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

我读过一些文章,其他的stackoverflow帖子,并跟随几位微软的穿行来写这封信。我能够让它作为一个ASP网站工作,但当它是一个MVC应用程序时,我似乎无法得到它。ASP应用程序需要添加大量的方法,我读到的所有内容都让MVC听起来应该简单得多

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

IIS身份验证

  • 匿名:禁用
  • ASP.NET模拟:已禁用
  • 表单:已启用
  • 窗口:禁用

    ... ...

我不断得到以下错误:

HTTP错误401.2-未经授权
由于身份验证标题无效,您无权查看此页面。

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

编辑:启用匿名身份验证

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

连接字符串中指定的容器不存在。

它正在
MyADMembershipProvider
的定义中查找错误

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

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

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

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

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


我认为值得补充的是,身份验证根本不起作用。
MembershipService.ValidateUser
总是返回false。

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

IIS身份验证

  • 匿名:禁用
  • ASP.NET模拟:已禁用
  • 表单:已启用
  • 窗口:禁用
在我的
Web.config
文件中,我使用了
Forms
authentication。显然,对于Active Directory身份验证,类型必须是
Windows。

原件:

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

修订:

<authentication mode="Windows" />

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

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