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

我们正在尝试使用图形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的userPricipal名称来获取用户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?

感谢您的指教

问候

评论
  • 霸占灵魂%
    霸占灵魂% 回复

    You need to encode the userPrincipalName and then put it in the graph api(I test it in graph explorer). You can go to this page and input the userPrincipalName to encode it and then copy the result to your graph api, the encoded userPrincipalName will be as below:

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

    希望能帮上忙〜