我有一个Web应用程序,我需要在那里使用AD UserGroups。我需要在我的观点和控制者中这样做:
var User = System.Web.HttpContext.Current.User;
if (User.IsInRole("DOMAIN\\group"))
{
Show();
}
我在应用程序中使用ClaimsBased Identity,但我也可以访问WindowsIndetity。我想要的是将WindowsIdentity声明/组添加到ClaimIdentity,之后使用ActiveDirectory userGroups(如角色)。
有可能吗?
感谢您的帮助!
答案 0 :(得分:0)
我不会转换,而是通过Identity.SignInManager验证Windows身份。
因此,SignInManager使用AuthenticationType Identity.Application ,并为您提供CreateUserPrincipalAsync
方法来返回ClaimsPrincipal。
执行SignInManager.SignInAsync
(或SignInManager.PasswordSignInAsync
)之后,HttpContext.User.Identities
- ClaimsIdentity
到目前为止创建了另一个身份
答案 1 :(得分:0)
我想出的解决方案是使用GenericPrinciple。
var identity = WindowsIdentity.GetCurrent();
var principal = new GenericPrinciple(identity, new string[] {"roleA", "roleB"});
HttpContext.Current.User = principal;
您可以从Active Directory中的组构建角色数组。