[英]Mapping User.Identity in .NET MVC app to active directory user
我正在编写一个内部网上的.NET MVC 5应用程序,使用Windows身份验证,需要查询Active Directory以查看可用的组,然后检查用户是否在该角色中。
组和用户名的来源将是活动目录。 然后,我需要使用.NET Identity检查身份和成员身份。 我不确定哪些字段映射到什么。
AD中感兴趣的领域似乎是:
所以,我认为SamAccountName == User.Identity.Name ,但文档说SamAccountName适用于早期的操作系统。 这是否有效意味着这已被弃用,我应该使用别的东西?
我的关于CN和objectGUID的断言是否正确?
第一步:设置参数以使用AD:
在web.config文件的部分中,设置以下内容:
<authentication mode="Windows" />
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
<providers>
<clear />
<add
name="AspNetWindowsTokenRoleProvider"
type="System.Web.Security.WindowsTokenRoleProvider"
applicationName="/" />
</providers>
</roleManager>
现在,您将能够直接使用System.Web.Security命名空间中的方法。
如果要将对View的访问权限仅限于AD的“groupName”组的成员:
你只需要像这样装饰你的控制器动作:
[Authorize(Roles = @"DOMAIN\groupName")]
Public ActionResult Index()
{...}
如果您想根据AD用户群进行治疗:
在治疗中使用“IsInRole(rolename)”等方法:
if (User.IsInRole("DOMAIN\\groupName"))
{
// Do what you want
}
编辑:有问题的实现:在这里,您应该在创建任务时保存受影响的组的sAMAccountName。 然后,当用户想要将任务标记为完成时,只需检查:
if (User.IsInRole("DOMAIN\\" + sAMAccountNameOfTheGroupDedicatedToYourTask))
{
// Mark as complete
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.