【发布时间】:2021-09-14 17:26:24
【问题描述】:
我的问题是,Microsoft Graph 是否可以在没有 User.Read 范围的情况下工作?我无法直接请求电子邮件配置文件 openid 权限。
它会引发 AccessDenied 错误。那么 User.Read 是电子邮件配置文件或 openid 的先决条件吗?
【问题讨论】:
-
我在下面发布了我的想法,我是否在某些地方误解了?如果有任何进一步的问题,请随时告诉我们。
我的问题是,Microsoft Graph 是否可以在没有 User.Read 范围的情况下工作?我无法直接请求电子邮件配置文件 openid 权限。
它会引发 AccessDenied 错误。那么 User.Read 是电子邮件配置文件或 openid 的先决条件吗?
【问题讨论】:
User.Read 只是使用MS Graph Get User 获取用户配置文件的委托权限。如果您的应用不需要读取用户个人资料,则您不需要此权限,但在大多数情况下您需要此权限,因为您的应用代表用户行事。
Microsoft Graph 是否可以在没有 User.Read 范围的情况下工作?
不,但在大多数情况下,您需要范围来读取用户配置文件并调用 /me 端点。
【讨论】:
您应该检查api文档,看看调用该api是否需要User.Read权限。
例如:我想调用this api列出邮件,我们可以看到这个api提供了两种权限,一种是委托,另一种是应用程序(这意味着client credential流是支持的)。此处列出了所有 api 权限,我们需要前往 azure ad 门户将 api 权限添加到用于生成访问令牌的 azure 广告应用程序中。
生成访问令牌后,您可以使用 jwt 解码工具检查您的访问令牌是否包含正确的范围(用于委托权限)或角色(用于应用程序权限)。使用正确的token调用api不会导致AccessDenied错误。顺便说一句,新添加的权限可能会延迟生效。
【讨论】: