首页 > 解决方案 > Azure 企业应用程序获取分配用户的电子邮件

问题描述

我正在开发一项 B2B 服务,该服务需要 Azure AD 连接来为 Azure AD 域的所有成员设置用户帐户。我需要名字、姓氏和电子邮件。

起初我只是使用 Users.Read.All 权限来读取所有用户对象,但我们的一些客户使用 AD 来存储不同的信息。

我正在寻找一种解决方案,我只能访问客户端分配给企业应用程序的用户和组。

我找到了 servicePrincipal api,但该服务不返回用户的电子邮件。通过以下方式调用此 api 时:https ://graph.microsoft.com/v1.0/servicePrincipals/{applicationId}/appRoleAssignedTo 响应如下所示:

    {
      "id": "41W1zT6z1U-kJxf62svfp1HFE8pMZhxDun-ThPczmJE",
      "deletedDateTime": null,
      "appRoleId": "00000000-0000-0000-0000-000000000000",
      "createdDateTime": "2021-02-02T04:22:45.9480566Z",
      "principalDisplayName": "Alex Wilber",
      "principalId": "cdb555e3-b33e-4fd5-a427-17fadacbdfa7",
      "principalType": "User",
      "resourceDisplayName": "dxprovisioning-graphapi-client",
      "resourceId": "8e881353-1735-45af-af21-ee1344582a4d"
    }

我在这里读到我可以使用 principalId 来请求用户对象,如下所示: https://graph.microsoft.com/v1.0/users/{principalId}。但这会导致错误解释我没有权限。

经过无数小时的谷歌搜索,我找不到解决这个问题的方法。这是不可能的吗?

标签: azureazure-active-directorymicrosoft-graph-api

解决方案


通过 PowerShell 获取 Azure 企业应用程序的所有用户帐户(用户显示名称、主体显示名称和电子邮件地址)

$app_name = "[app display name]"
$sp = Get-AzureADServicePrincipal -Filter "displayName eq '$app_name'"
$assignments = Get-AzureADServiceAppRoleAssignment -ObjectId $sp.ObjectId -All $true
$assignments  # this will show all the users associated to the principal

参考所以线程:Azure:在 Node JS/Power shell 脚本中获取分配给企业应用程序的用户?


推荐阅读