我将只同意图形 API 中的特定管理员权限。
但它请求所有租户权限。
当前逻辑是
通过授权获取委托令牌。
https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/authorize?client_id={CLIENT_ID}&response_type=token&redirect_uri={LOGIN_REDIRECT_URI}&response_mode=form_post&scope=offline_access https://graph.microsoft.com/.default
提示管理员同意
获取应用令牌
在这个逻辑中,管理员同意总是在 2) 中询问所有权限,但我只想询问权限 Calendars.ReadWrite
。
如何请求同意特定权限?
答案 0 :(得分:0)
如果您登录 Azure 门户并找到您的应用程序
https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps
点击 API 权限标签
您将看到 Microsoft Graph API 的所有配置权限。
通过删除所有冗余权限确保只有 Calendars.ReadWrite
。
答案 1 :(得分:0)
这与您的权限类型有关。如果您的权限是委托权限,您可以在管理员同意页面上动态同意特定的委托权限:scope=https://graph.microsoft.com/calendars.readwrite
。
如果您的权限是应用程序权限,则您只能请求静态 /.default
范围,这将需要管理员同意租户中的所有权限:scope=https://graph.microsoft.com/.default
。
见document,有详细说明:
<块引用>此时,Azure AD 需要租户管理员登录
完成请求。要求管理员批准所有
您在 scope
参数中请求的权限。如果你有
使用静态 (/.default
) 值,它将像 v1.0 管理员一样工作
同意端点并请求同意中找到的所有范围
所需的权限(用户和应用程序)。为了请求应用程序
权限,您必须使用 /.default
值。如果你不想
管理员在管理员同意屏幕中查看给定的权限
使用 /.default
时,最佳做法是不要将
所需权限部分中的权限。相反,您可以使用
动态同意在同意中添加您想要的权限
运行时屏幕,而不是使用 /.default
。