MSAL生成令牌后调用Get-MgUser及Connect-ExchangeOnline权限问题求助
问题1:Get-MgUser权限不足
当前配置的User.Read是委派权限,而你使用客户端凭证(Client Secret)获取的是应用权限令牌,委派权限无法在应用模式下生效。解决步骤:
- 进入Azure AD企业应用的API权限页面,为Microsoft Graph添加应用权限:
User.Read.All(若仅需用户基础信息,可选User.ReadBasic.All) - 添加后点击授予管理员同意(必须完成此操作,权限才会生效)
- 重新获取令牌,此时令牌将包含该应用权限,执行
Get-MgUser即可正常运行
问题2:Connect-ExchangeOnline未授权
存在两个核心问题:
- 权限配置错误:你添加的
Exchange.Manage并非正确的应用权限,需为企业应用添加Exchange Online的应用权限:Exchange.ManageAsApp,同样需要完成管理员同意操作。 - 令牌受众不匹配:当前获取的令牌针对Microsoft Graph(默认scope为
https://graph.microsoft.com/.default),而Connect-ExchangeOnline需要Exchange Online专属令牌。修改MSAL命令单独请求:
# 获取Exchange Online专用令牌 $global:ExchangeToken = Get-MsalToken -clientID $CalendarPermissionsclientID -clientSecret $CalendarPermissionsclientSecret -tenantID $CalendarPermissionstenantID -Scope "https://outlook.office365.com/.default" -ForceRefresh $global:ExchangeTokenSecure = ConvertTo-SecureString $ExchangeToken.AccessToken -AsPlainText -Force # 连接Exchange Online Connect-ExchangeOnline -AccessToken $ExchangeTokenSecure -Organization $CalendarPermissionstenantID
注意:应用模式下无需指定-UserPrincipalName参数,该参数仅适用于委派权限场景。
内容的提问来源于stack exchange,提问作者Alan1987
相关产品推荐
相关产品推荐

