0

我有一个 Web 应用程序,我需要在那里使用 AD 用户组。我需要在我的视图和控制器中这样做:

var User = System.Web.HttpContext.Current.User;
if (User.IsInRole("DOMAIN\\group"))
{
                Show();            
}

我在应用程序中使用 ClaimsBased Identity,但我也可以访问 WindowsIndetity。我想要的是向 ClaimIdentity 添加 WindowsIdentity 声明/组,然后使用 ActiveDirectory 用户组(如角色)。

有可能的 ?

感谢帮助 !

4

2 回答 2

0

我想出的解决方案是使用 GenericPrinciple。

var identity = WindowsIdentity.GetCurrent();
var principal = new GenericPrinciple(identity, new string[] {"roleA", "roleB"});
HttpContext.Current.User = principal;

您可以从 Active Directory 中的组构建角色数组。

于 2017-04-19T16:17:28.097 回答
0

我不会转换而是通过 Identity.SignInManager 验证 Windows 身份。

因此,SignInManager 正在使用 AuthenticationType Identity.Application并为您提供CreateUserPrincipalAsync返回 ClaimsPrincipal 的方法。

一旦你这样做SignInManager.SignInAsync(或SignInManager.PasswordSignInAsync)另一个身份被创建HttpContext.User.Identities-ClaimsIdentity到目前为止

于 2016-10-13T06:49:04.920 回答