【发布时间】:2012-11-25 21:19:07
【问题描述】:
我已经阅读了有关此主题的几个问题, 如here、here、here和here; 但在我的情况下,没有人提供可行的解决方案。
我想做的事:
为仅由我们自己的员工使用的 Web 应用程序实施 Windows 身份验证。这样他们就不需要登录应用程序,但已经通过登录 Windows 进行了身份验证。
另外,我需要根据用户可能被分配到的 Active Directory 安全组来限制应用的某些区域。
所以我希望能够用
来装饰控制器/动作[Authorize(Roles="SomeRole")]
我的尝试:
我有
<authentication mode="Windows" />
在我的 web.config 中。我添加了<roleManager> 的几种排列,如上面链接的一些帖子中所示。目前我有这个角色经理
<roleManager defaultProvider="WindowsProvider"
enabled="true"
cacheRolesInCookie="false">
<providers>
<add
name="WindowsProvider"
type="System.Web.Security.WindowsTokenRoleProvider" />
</providers>
</roleManager>
在this 帖子中找到。
事实上,如果我用[Authorize] 装饰一个控制器,我可以正常访问它。
但是:
我可以在网络上的用户设置中看到,我是一个名为“IT”的 AD 安全组的成员。但是,如果我用[Authorize(Roles="IT")] 装饰同一个控制器,我会得到由 asp.net 开发服务器为未授权的 401 服务的空白屏幕。 这是出乎意料的。我认为我应该能够在我登录到 Windows 并且属于“IT”组时查看该页面。
我在这个主题上找到的大部分内容听起来都很容易完成我想做的事情,但我显然在这里遗漏了一些东西。
【问题讨论】:
-
您是否也将 ASP.NET 成员资格提供程序设置为使用 Active Directory?不仅仅是角色提供者......
-
@marc_s 我确实在 web.config 中将 ASpNetActiveDirectoryMembershipProvider 设置为默认值。如果您认为那里可能存在导致问题的错误,我可以发布。
-
这是一个老线程,但是有AD安全,需要指定域吗? [授权(角色=@“域名\SomeRole”)]
标签: asp.net-mvc active-directory windows-authentication