Asp.net 如何从内部部署的ADFS声明中获取用户组

Asp.net 如何从内部部署的ADFS声明中获取用户组,asp.net,vb.net,wif,adfs,Asp.net,Vb.net,Wif,Adfs,我跟随本文使用内部ADFS联盟构建了演示应用程序 我能够使用简单的代码为用户获取所需的信息 Dim UserEmail = System.Security.Claims.ClaimsPrincipal.Current.FindFirst(System.IdentityModel.Claims.ClaimTypes.Email).Value 但我如何才能获取用户名所属的用户组,并检查用户帐户是否是Active Directory中Windows组的成员 我已经尝试使用System.Securi

我跟随本文使用内部ADFS联盟构建了演示应用程序

我能够使用简单的代码为用户获取所需的信息

Dim UserEmail = System.Security.Claims.ClaimsPrincipal.Current.FindFirst(System.IdentityModel.Claims.ClaimTypes.Email).Value
但我如何才能获取用户名所属的用户组,并检查用户帐户是否是Active Directory中Windows组的成员


我已经尝试使用
System.Security.Claims.ClaimsPrincipal.Current.IsInRole
来检查用户是否在组中,但它不起作用

在ADFS声明规则中,您需要配置规则“将LDAP属性作为声明发送”/“令牌组-非限定名称”,并将“角色”映射为“传出声明类型”

ADFS然后以角色格式提供用户所属的所有安全组,WIF将它们映射到IsInRole构造。

这样就足够了

ClaimsPrincipal.Current.AddIdentity(new ClaimsIdentity());
ViewBag.Name = ClaimsPrincipal.Current.FindFirst(ClaimTypes.Email).Value;

:)

仍然无法获取用户的角色。是否需要将rolemanager添加到web.configure如果您列举了所有获得的声明,列表中是否有角色?谢谢。这对我来说很好,包括使用
System.Security.Claims.ClaimsPrincipal.Current.IsInRole(“MyGroupName”)
。OP:确保清除应用程序域中的任何cookie(以强制从ADF刷新身份)。我可以在属性
((System.Security.Claims.ClaimsIdentity)System.Security.Claims.ClaimsPrincipal.Current.Identity)中看到所有组。声明
,示例: