MVC Windows身份验证应用程序尝试进​​行匿名身份验证

时间:2015-07-28 13:58:01

标签: asp.net-mvc authentication

我正在创建一个新的MVC应用程序并尝试设置Windows身份验证,但是当我尝试登录时它会拒绝我。

我不认为这与IIS Express或我的浏览器有关,因为我有其他使用Windows身份验证的MVC应用程序可以正常工作。在查看交易日志之后,它似乎正在尝试通过匿名身份验证进行连接,这让我感到困惑,因为如果在我的web.config中有这个:

<authentication mode="Windows"/>

在我的项目属性中,我还启用了Windows身份验证并禁用了匿名身份验证。

我不确定要包含哪些其他信息,所以如果需要更多信息请告诉我。在这里迷失方向,请帮助。

更新: 更近但仍然没有工作, 从我的Web配置中删除以下内容修复了我的匿名身份验证问题:

<authorization>
</authorization>

但是现在在我的堆栈跟踪中,我看到以下行没有出现在我正在使用的其他Windows身份验证应用程序中:

AspNetAppDomainEnter    Data1="/LM/W3SVC/45/ROOT-1-130825677814817784"  14:36:37.272
AspNetStartHandler  Data1="ASP.global_asax", Data2="Start"  14:36:37.272
AspNetPipelineEnter Data1="System.Web.Security.WindowsAuthenticationModule" 14:36:37.272
AspNetPipelineLeave Data1="System.Web.Security.WindowsAuthenticationModule"

这是我得到的错误:

ModuleName  ManagedPipelineHandler
Notification    EXECUTE_REQUEST_HANDLER
HttpStatus  401
HttpReason  Unauthorized
HttpSubStatus   0
ErrorCode   The operation completed successfully.
 (0x0)
ConfigExceptionInfo 

目前还不确定他们的意思,但似乎他们可能与我的问题有关。

更新: 我剩下的问题似乎是我正在使用的活动目录组特有的。用户似乎没有我在FilterConfig中的角色,所以当我删除所有过滤器角色时,我被拒绝访问。

解决: 为了完整起见,我将添加修复授权问题的内容。出于某种原因,在我的FilterConfig中添加多个角色时出现问题,如下所示:

filters.Add(new HandleErrorAttribute());
filters.Add(new System.Web.Mvc.AuthorizeAttribute() { Roles = Auth.ROLE1 });
filters.Add(new System.Web.Mvc.AuthorizeAttribute() { Roles = Auth.ROLE2 });
filters.Add(new System.Web.Mvc.AuthorizeAttribute() { Roles = Auth.ROLE3 });

但是当我创建一个汇总组并将其全部添加到AD组中时,那么就像这样授权单个组:

filters.Add(new HandleErrorAttribute());
filters.Add(new System.Web.Mvc.AuthorizeAttribute() { Roles = Auth.ALL_ROLES });

它解决了我的授权问题。

1 个答案:

答案 0 :(得分:2)

您可能需要强制进行身份验证,可能只需将<authorization />标记添加到<system.web>元素:

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