userPrincipalName无法用于查询图

时间:2018-04-25 14:13:08

标签: azure-active-directory microsoft-graph

在AzureAD中,我的用户具有以下用户名:firstName.Surname@live.se

我假设这是principalUserName但是当我查询Microsoft Graph时,它说它不存在:

https://graph.microsoft.com/v1.0/users/firstName.Surname@live.se

当我使用id(GUID)时,我会返回user,我可以看到userPrincipalName实际上是firstName.Surname_live.se#EXT#@firstNameSurnamelive.onmicrosoft.com

userPrincipalName不能用于查询图表。如果我尝试,我会收到错误

  

"资源' firstName.Surname_live.se'不存在或其查询的引用属性对象之一不存在。"

  

"资源' live.se'不存在或其查询的引用属性对象之一不存在。"

此帐户是我创建Azure帐户时使用的帐户。我使用了现有的电子邮件。我理解这是它添加#EXT#@firstNameSurnamelive.onmicrosoft.com的原因,但在查询Graph时如何使用它?或者也许这个帐户不适用于此?

为了解决这个问题,我可以使用id代替userPrincipalName进行查询,但我已经知道userPrincipalName应该有效。如果我切换到id,我如何获得它已经由授权过程创建了用户?

1 个答案:

答案 0 :(得分:1)

地址firstName.Surname@live.se不是AAD帐户,它是消费者Microsoft帐户(又名Outlook.com,XBox Live)。您看到userPrincipalName firstName.Surname_live.se#EXT#@firstNameSurnamelive.onmicrosoft.com,因为他们是您AAD租户中的“访客”用户。

您收到此错误的原因是firstName.Surname_live.se#EXT#@firstNameSurnamelive.onmicrosoft.com包含需要进行URL编码的保留字符。 #特别会导致问题,因为它表示URI片段的开始。片段完全是客户端的,没有发送到服务器;意味着Microsoft Graph在firstname.surname_live.se之后没有收到任何内容。

要解决此问题,网址会对userPrincipalName进行编码,使其变为firstName.Surname_live.se%23EXT%23%40firstNameSurnamelive.onmicrosoft.com。然后,您可以使用它来正确调用Microsoft Graph:

/v1.0/users/firstName.Surname_live.se%23EXT%23%40firstNameSurnamelive.onmicrosoft.com