我正在尝试将Active Directory身份验证添加到多年前构建的帮助台系统中。渐渐地,我们将升级整个系统。我首先创建一个将承载登录的MVC2应用程序,然后我的计划是将当前功能引入MVC,因为我们还添加了新功能。
但登录是整个事情的基础。我们需要审计,因此我们需要知道系统中的人员。
我已阅读文章,其他stackoverflow帖子,并在信中跟踪了几个MS演练。我能够让它作为一个ASP网站工作,但当它是一个MVC应用程序时,我似乎无法得到它。 ASP应用程序需要添加广泛的方法,我读到的所有内容都使得听起来像MVC应该更简单。
以下是我的IIS设置以及我对web.config所做的修改:
IIS身份验证
Windows:已禁用
...
...
我一直收到以下错误:
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"/>
成功重定向到登录页面,但它没有自动验证我。当我再次将Anonymous
设置为Disabled
时,我又回到了原来的错误。
我认为我在这里缺少一些必要的知识,我不会从我正在阅读的资料中获得。
编辑:身份验证根本无法正常工作
我认为可能值得补充的是,身份验证根本不起作用。MembershipService.ValidateUser
总是返回false。
答案 0 :(得分:0)
我认为解决方案属于身份验证类型。最初,我使用以下内容:
IIS身份验证
在我的Web.config
文件中,我使用的是Forms
身份验证。显然,对于Active Directory身份验证,类型必须为Windows.
原件:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
修:
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
我知道这很有效,但由于我是MVC的新手,我仍然可能会遗漏一些东西。