.net core 获取Azure AD用户在.Net Core声明中所属组的列表

.net core 获取Azure AD用户在.Net Core声明中所属组的列表,.net-core,azure-active-directory,.net Core,Azure Active Directory,我正在尝试获取Azure AD用户在.Net Core中所属的组列表,其中包含在“隐式流”中生成的令牌。没有组信息 我正在使用“隐式流”,如以下链接中所述: 下面显示了如何在.NET Framework中执行此操作,但.NET Core没有“ActiveDirectoryClient”类 非常感谢您的帮助 derek您可以首先在清单中将groupMembershipClaims属性设置为SecurityGroup,然后在登录后在asp.net core中获取组列表: var groups =

我正在尝试获取Azure AD用户在.Net Core中所属的组列表,其中包含在“隐式流”中生成的令牌。没有组信息

我正在使用“隐式流”,如以下链接中所述:

下面显示了如何在.NET Framework中执行此操作,但.NET Core没有“ActiveDirectoryClient”类

非常感谢您的帮助


derek

您可以首先在清单中将
groupMembershipClaims
属性设置为
SecurityGroup
,然后在登录后在asp.net core中获取组列表:

var groups = User.Claims.Where(c => c.Type == "groups").ToList();
更新:

然后您可以调用Azure AD Graph api来获取组信息。首先参考代码示例:

在.net core应用程序中,您可以获取组对象id和调用图api:

https://graph.windows.net/myorganization/groups/<objectid>?api-version=1.6
以下集团实体供您参考:

   public class RootObject
        {
            public string objectType { get; set; }
            public string objectId { get; set; }
            public object deletionTimestamp { get; set; }
            public string description { get; set; }
            public object dirSyncEnabled { get; set; }
            public string displayName { get; set; }
            public object mail { get; set; }
            public string mailNickname { get; set; }
            public bool mailEnabled { get; set; }
            public bool securityEnabled { get; set; }
        }

问题是,这些索赔不包括集团信息。您需要进行第二次调用,如上面的第二个链接所示。是的,group claim只返回组对象id而不是组名称,您需要调用graph api来获取组信息,如名称。请参阅我的更新答案。NaiveSessionCache是System.IdentityModel的一部分,不适用于Core。还有别的选择吗?
   public class RootObject
        {
            public string objectType { get; set; }
            public string objectId { get; set; }
            public object deletionTimestamp { get; set; }
            public string description { get; set; }
            public object dirSyncEnabled { get; set; }
            public string displayName { get; set; }
            public object mail { get; set; }
            public string mailNickname { get; set; }
            public bool mailEnabled { get; set; }
            public bool securityEnabled { get; set; }
        }