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