首页 文章

从微软图获取所有用户属性

提问于
浏览
3

我们有一个应用程序,它使用本地AD来获取用户信息 . 有些客户希望迁移到 Cloud 并使用Azure AD . 我们扩展了应用程序以通过owin签署用户,现在我们通过Microsoft Graph获取用户 .

但是,从Microsoft Graph我们没有获得完整的用户配置文件 . 我们想要获取用户的所有属性,而不仅仅是基本属性 .

var client = new RestClient(string.Format("https://graph.microsoft.com/v1.0/users/{0}", userEmail));
request = new RestRequest();
request.Method = Method.GET;
request.AddHeader("Authorization", _token.Token);
var reponse = client.Execute(request);

这只给了我一些信息,例如我从这里得不到'Department' . 是否可以在azure中配置应该返回的内容,如果是,那么在哪里?或者我需要 /users/ 以外的其他东西?

不同的客户可能具有需要获取的不同特殊属性 . 因此,最好的解决方案是让 endpoints 调用并获取所有内容,包括azure广告中不标准的特殊属性 . 之后,我可以解析它在我身边 . 这可能吗?

应用程序拥有读取基本和完整配置文件的权限 . 我还需要更多东西吗?

2 回答

  • 1

    这是Graph API的正常行为,请参阅文档here和此摘录:

    默认情况下,仅返回一组有限的属性(businessPhones,displayName,givenName,id,jobTitle,mail,mobilePhone,officeLocation,preferredLanguage,surname,userPrincipalName) . 要返回备用属性集,必须使用OData $ select查询参数指定所需的用户属性集 . 例如,要返回displayName,givenName和postalCode,您可以使用以下内容添加到您的查询$ select = displayName,givenName,postalCode

    您必须在select中指定所有字段,因为 $select=* 将仅输出Graph API实现中的关键字段 .

    所以你将无法得到你所要求的(可变自定义字段) .

    有关用户字段的更多信息,请参阅here

  • 6

    正如NicolasR已经说明的那样,您必须使用“$ select”参数列出要检索的所有字段;如果你想要检索自定义字段,你可以将它们添加到上一个参数(如果你知道它们的名字),或者你可以使用“$ expand = extensions”

相关问题