检查用户是否是Azure广告组的成员

检查用户是否是Azure广告组的成员,azure,active-directory,asp.net-mvc-5,Azure,Active Directory,Asp.net Mvc 5,我是Azure的新手。我已将我的MVC 5网站发布到Azure。我在c#dictionary中有一个组名及其objectid的列表。广告组是在Azure广告目录中创建的。我正在尝试查找登录的用户是否是Azure广告组的成员。由于某种原因,我没有成功。当我使用GraphConnection.IsMemberOf()函数时,我得到了NUllreferenceException。如果你有人能帮我解决这个问题就太好了 这是我的密码 try { va

我是Azure的新手。我已将我的MVC 5网站发布到Azure。我在c#dictionary中有一个组名及其objectid的列表。广告组是在Azure广告目录中创建的。我正在尝试查找登录的用户是否是Azure广告组的成员。由于某种原因,我没有成功。当我使用
GraphConnection.IsMemberOf()函数时,我得到了NUllreferenceException。如果你有人能帮我解决这个问题就太好了

这是我的密码

try
            {
                var userObjectId = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
                var authContext = new AuthenticationContext(String.Format(CultureInfo.InvariantCulture, loginUrl, tenant));
                var credential = new ClientCredential(clientId, appKey);
                var result = authContext.AcquireToken(graphResourceId, credential);

                var clientRequestId = Guid.NewGuid();
                var graphSettings = new GraphSettings
                {
                    ApiVersion = GraphConfiguration.GraphApiVersion
                };
                var graphConnection = new GraphConnection(result.AccessToken, clientRequestId, graphSettings);

                if (string.IsNullOrEmpty(this.adGroupObjectId))
                {
                    var groups = graphConnection.List<Group>(null, null);

                    if (groups != null && groups.Results != null)
                    {
                        var group = groups.Results.SingleOrDefault(r => r.DisplayName == adGroup);
                        if (group != null)
                            adGroupObjectId = group.ObjectId;
                    }
                }
                if (adGroupObjectId != null)
                    inGroup = graphConnection.IsMemberOf(adGroupObjectId, userObjectId);

                return inGroup;
            }
            catch(Exception ex)
            {
                var message = string.Format("Unable to authorize AD user: {0} against group: {1}", ClaimsPrincipal.Current.Identity.Name, adGroup);
                throw new Exception(message, ex);                
            }
试试看
{
var userObjectId=ClaimsPrincipal.Current.FindFirst(“http://schemas.microsoft.com/identity/claims/objectidentifier1.价值;
var authContext=newauthenticationContext(String.Format(CultureInfo.InvariantCulture,loginUrl,tenant));
var-credential=新的ClientCredential(clientId,appKey);
var result=authContext.AcquireToken(graphResourceId,凭证);
var clientRequestId=Guid.NewGuid();
变量图形设置=新图形设置
{
ApiVersion=GraphConfiguration.GraphAversion
};
var graphConnection=新的graphConnection(result.AccessToken、clientRequestId、graphSettings);
if(string.IsNullOrEmpty(this.adGroupObjectId))
{
var groups=graphConnection.List(null,null);
if(groups!=null&&groups.Results!=null)
{
var group=groups.Results.SingleOrDefault(r=>r.DisplayName==adGroup);
如果(组!=null)
adGroupObjectId=group.ObjectId;
}
}
if(adGroupObjectId!=null)
inGroup=graphConnection.IsMemberOf(adGroupObjectId,userObjectId);
返回组;
}
捕获(例外情况除外)
{
var message=string.Format(“无法针对组:{1}授权AD用户:{0}”,ClaimsPrincipal.Current.Identity.Name,adGroup);
抛出新异常(消息,ex);
}

Akhil,我们最近启用了Azure AD中的应用程序角色和组声明功能。根据您的场景,其中一个应该是合适的

请在此处快速浏览:

应用程序角色的深度发布和视频功能如下:

关于团体索赔的深层次帖子和视频功能如下:


希望能有所帮助。

我尝试使用graphConnection的所有方法都会出错。例如:graphConnection.Get(userObjectId);目前没有任何链接可用,请修复此链接或将相关信息直接发布到帖子中。