azure - 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}。但这会导致错误解释我没有权限。
经过无数小时的谷歌搜索,我找不到解决这个问题的方法。这是不可能的吗?
解决方案
通过 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
推荐阅读
- python - 将字典列表中的字符串更改为整数
- github - 有没有办法在 Microsoft 团队中获取 Github 拉取请求通知?
- reactjs - React-Native expo 调试错误未显示任何有用信息或错误消息
- go - 使用通道退出永远循环 - Go Playground 的问题
- pandas - datetime 对象之间的差异仅返回天数
- javascript - 添加任何类型不绑定后的打字稿
- javascript - 引导程序中的统一垂直拉伸单列内容
- c++ - 在 Vector 类对象上调用 push_back() 方法时收到错误
- cassandra - 在 Cassandra 中增加 row_cache_size_in_mb 有什么副作用吗?
- css - CSS 网格库和锚标签