将 WindowsIdentity 转换为 ClaimIdentity



我有一个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 中的组构造角色数组。

相关内容

  • 没有找到相关文章

最新更新