将WindowsIdentity转换为ClaimsIdentity

时间:2016-03-17 17:09:07

标签: asp.net-mvc asp.net-identity aspnetboilerplate

我有一个Web应用程序,我需要在那里使用AD UserGroups。我需要在我的观点和控制者中这样做:

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

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

有可能吗?

感谢您的帮助!

2 个答案:

答案 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中的组构建角色数组。