You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PowerShell获取Azure租户用户MFA信息并完成权限授权

解决PowerShell调用Graph API获取MFA信息的权限问题

问题原因

你当前用Get-AzAccessToken获取的Token仅包含Azure资源管理相关权限,不具备访问Microsoft Graph中用户MFA方法所需的权限,因此触发accessDenied错误。Graph Explorer能成功是因为你手动授权了对应的Graph权限,而PowerShell中需要显式请求这些权限。

推荐解决方案:使用Microsoft Graph PowerShell模块

官方模块已封装权限处理和API调用,无需手动拼接请求:

  1. 安装Graph模块(首次使用):
Install-Module Microsoft.Graph.Identity.SignIns -Force -AllowClobber
  1. 连接Graph并请求权限:
    执行后会弹出浏览器登录窗口,使用拥有读取用户MFA权限的账号(如全局管理员、身份验证管理员)登录:
Connect-MgGraph -Scopes "UserAuthenticationMethod.Read.All"
  1. 直接获取用户MFA信息:
$userUPN = "xx.xxxx@xxxxx.onmicrosoft.com"
Get-MgUserAuthenticationMethod -UserId $userUPN

备选方案:手动获取带权限的Graph Token(适合自定义请求)

若坚持使用Invoke-RestMethod,需先获取包含正确权限的Token:

  1. 连接Graph并获取Token:
# 先连接Graph并授权所需权限
Connect-MgGraph -Scopes "UserAuthenticationMethod.Read.All"

# 提取当前会话的有效Token
$accessToken = (Get-MgContext).AccessToken
  1. 调用Graph API:
$userUPN = "xx.xxxx@xxxxx.onmicrosoft.com"
$userObjectId = (Get-AzADUser -UserPrincipalName $userUPN).Id
$graphApiUrl = "https://graph.microsoft.com/v1.0/users/$($userObjectId)/authentication/methods"

$response = Invoke-RestMethod -Uri $graphApiUrl -Headers @{ Authorization = "Bearer $accessToken" } -Method Get -ErrorAction Stop

权限说明

  • 读取**单个用户(自己)**的MFA方法:需UserAuthenticationMethod.Read权限
  • 读取其他用户的MFA方法:需UserAuthenticationMethod.Read.All权限,且登录账号需具备对应角色(如全局管理员、身份验证管理员)

内容的提问来源于stack exchange,提问作者Ali Alvi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 17:27:49