从 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 ad 中不标准的特殊属性。之后我可以在我这边解析它。这可能吗?

该应用程序有权读取基本配置文件和完整配置文件。我还需要什么吗?

原文由 user2235494 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 567
2 个回答

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

By default, only a limited set of properties are returned ( businessPhones , displayName , givenName , id , jobTitle , mail , mobilePhone , officeLocation , preferredLanguage --- , surname , userPrincipalName ) .

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

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

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

有关用户字段的更多信息,请参见 此处

原文由 Nicolas R 发布,翻译遵循 CC BY-SA 4.0 许可协议

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);

原文由 Milind 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题