如何使用MS Graph API删除Gmail来宾帐户

时间:2020-05-18 07:37:38

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

我们正尝试使用图形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

它返回如下错误:

{“错误”:{“代码”:“ Request_ResourceNotFound”,“消息”:“资源'serge.cal_gmail.com'不存在,或者其查询的参考属性对象之一不存在。”,“ innerError “:{” request-id“:” da8bdcda-6304-4c3c-93b2-6454433dcba2“,” date“:” 2020-05-15T14:51:46“}}

已更新: 根据您作为测试的评论,我已经手动编码了用户密码并在POSTMAN下对其进行了测试,它返回正确的用户详细信息。

但是问题是,由于我事先不知道将要生成的用户ID,所以我正在使用user的userPrimary名称来获取用户ID。在Azure AD帐户中,userPrincipal通常是电子邮件地址,这就是我使用API​​调用获取用户信息的方式。

现在,对于不基于外部AD的GUEST帐户而言,问题在于,我唯一需要获取用户的方法是通过来宾帐户的userPrincipal,当我检查用户的AD个人资料时,GUEST用户的主要信息如下图所示是电子邮件地址:

Guest user Principal info

因此,通过使用此信息对API返回未找到资源的错误,这是因为如果我通过其ID来获取用户(我不知道,除非手动进入AD,这不是目标),否则我会得到用户主体的构成如下:

enter image description here

因此,在Azure AD屏幕中,以某种方式隐藏了GUEST用户的真实userPrincipal形式。

那么我该如何正确获取呢?

1-通过电子邮件正常使用API​​常规方法 2-然后捕获错误消息 3如果使用wierd语法重新格式化userPrincipal时发生错误?

或者API是否提供了获取来宾帐户的功能,然后从用户的来宾响应列表中搜索所需的电子邮件地址用户并获得其ID?

感谢您的建议

致谢

1 个答案:

答案 0 :(得分:0)

您需要对userPrincipalName进行编码,然后将其放入图形api(我在图形浏览器中对其进行了测试)。您可以转到此page并输入userPrincipalName对其进行编码,然后将结果复制到图形api中,编码后的userPrincipalName将如下所示:

xxxxxx.com%23EXT%23%40xxxxx.onmicrosoft.com

希望有帮助〜