【发布时间】:2020-05-18 07:37:38
【问题描述】:
我们正在尝试使用图形 API 从 AD 中删除来宾用户。为此,我们使用文档中描述的以下内容:
https://graph.microsoft.com/v1.0/users/{userPrincipalName}
如果用户是具有正常工作的 AD 域的用户,但对于具有 GMAIL 帐户的外部用户,userPrincipalName 的格式如下示例:
例如:serge.cal_gmail.com#EXT#@xxxx.onmicrosoft.com
当我尝试通过首先获取该用户的 ID 来获取该用户的 ID 时:
https://graph.microsoft.com/v1.0/users/serge.cal_gmail.com#EXT#@xxxx.onmicrosoft.com
返回错误如下:
{ "error": { "code": "Request_ResourceNotFound", "message": "资源 'serge.cal_gmail.com' 不存在或其查询的引用属性对象之一不存在。", "innerError ": { "request-id": "da8bdcda-6304-4c3c-93b2-6454433dcba2", "date": "2020-05-15T14:51:46" } } }
更新: 根据您作为测试的评论,我已手动对 userprincipal 进行编码并在 POSTMAN 下对其进行测试,从而返回正确的用户详细信息。
但问题是,由于我事先不知道将生成的用户 ID,因此我使用用户的 userPricipal 名称来获取用户 ID。在 Azure AD 帐户中,userPrincipal 大部分时间是电子邮件地址,这是我使用 API 调用获取用户信息的原因。
现在对于不基于外部 AD 的 GUEST 帐户的情况,问题是我必须获取用户的唯一方法是通过来宾帐户的 userPrincipal 并且当我检查我的用户 AD 个人资料时,我的 GUEST userPricipal 信息是如下图所示的电子邮件地址:
因此,通过使用此信息向 API 返回未找到资源的错误,这是因为如果我通过其 ID 获取用户(除了手动进入 AD 之外,我不知道这不是目标)我得到用户主体形成如下:
因此,在 Azure AD 屏幕中,GUEST 用户的真实 userPrincipal 形式以某种方式隐藏。
那么我怎样才能正确获取它呢?
1 - 通过电子邮件正常使用 API 2 - 然后捕获错误消息 3 如果出现错误,使用奇怪的语法重新格式化 userPrincipal ?
或者 API 是否提供获取访客帐户的可能性,然后从用户的访客响应列表中搜索我需要的电子邮件地址用户并获取它的 ID?
感谢建议
问候
【问题讨论】:
标签: azure-active-directory microsoft-graph-api