检查用户是否是Azure广告组的成员
我是Azure的新手。我已将我的MVC 5网站发布到Azure。我在c#dictionary中有一个组名及其objectid的列表。广告组是在Azure广告目录中创建的。我正在尝试查找登录的用户是否是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
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);目前没有任何链接可用,请修复此链接或将相关信息直接发布到帖子中。