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

时间:2018-01-12 16:06:56

标签: javascript azure-active-directory microsoft-graph

我们有一个应用程序,它使用本地AD来获取用户信息。有些客户希望迁移到云并使用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);

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

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

app har读取基本和完整配置文件的权限。我还需要更多东西吗?

3 个答案:

答案 0 :(得分:6)

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

  

默认情况下,仅返回一组有限的属性(   businessPhonesdisplayNamegivenNameidjobTitlemail,   mobilePhoneofficeLocationpreferredLanguagesurname,   userPrincipalName)。

     

要返回备用属性集,您必须指定所需的属性集   使用OData $select查询参数设置用户属性。对于   例如,要返回displayName,givenName和postalCode   使用将以下内容添加到您的查询中   $select=displayName,givenName,postalCode

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

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

可以在here

找到有关用户字段的更多信息

答案 1 :(得分:1)

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

答案 2 :(得分:1)

User user = await graphServiceClient
    .Users[emailId]
    .Request()
    .Select(aadUser => new
    {
        aadUser.Id,
        aadUser.UserPrincipalName,
        aadUser.DisplayName,
        aadUser.GivenName,
        aadUser.Surname,
        aadUser.City,
        aadUser.MailNickname,
        aadUser.UserType
    })
    .GetAsync()
    .ConfigureAwait(false);