微软个人账户能否使用带应用权限的MS Graph API服务账户?
我一直使用微软个人账户(实际是绑定Gmail的账户,用于登录微软个人账户及Azure门户),在Azure中拥有多个应用、DNS服务等资源。我在ASP.NET Core Web API中使用托管身份,让应用服务和已授予Users.Read.All、Calendars.ReadWrite、Files.ReadWrite、Mail.ReadWrite、Contacts.ReadWrite应用权限的应用注册交互。但目前只能调用Users.Read.All接口获取用户列表,调用其他权限的接口均返回错误。
查阅资料得知微软个人账户无法使用MS Graph API的服务账户及应用权限,但Azure门户的应用注册里有「授予管理员同意」按钮,企业应用界面也显示了这些权限,这让我产生了困惑。
待明确问题
- 此类场景是否必须升级至商业账户?
- 若选择微软商业套餐,这些权限是否会自动生效,可正常发起MS Graph API请求?
- 用个人账户登录Azure门户创建的Active Directory新用户是否也属于个人账户?
是的,必须升级到商业/工作/教育类的Azure AD账户(比如Microsoft 365商业版、Azure AD Premium等)。微软个人账户(个人Microsoft Account,MSA)对应的个人租户不支持MS Graph API的应用权限调用除少数基础接口(如
Users.Read.All)外的大多数权限。你看到的「授予管理员同意」按钮只是界面统一,个人租户无法完成完整的应用权限授权流程,导致其他权限无法生效。升级到微软商业套餐后,你会拥有正式的工作/学校Azure AD租户。此时需要重新在该租户下创建应用注册,授予对应应用权限并完成管理员同意操作(商业租户有合法的管理员角色),之后托管身份就能正常调用这些MS Graph API接口。权限不会自动生效,需重新配置应用注册和授权步骤,配置完成后即可正常发起请求。
用个人账户登录Azure门户创建的Active Directory用户,属于你个人租户下的绑定用户,本质还是个人账户范畴,并非商业租户的工作/学校账户。这类用户无法支持应用权限的完整使用场景,只有在商业租户下创建的用户才属于企业类账户。
内容的提问来源于stack exchange,提问作者Qiuzman

