在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
,我如何获得它已经由授权过程创建了用户?
答案 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