Azure AD B2C中Revoke-AzureADUserAllRefreshToken使用及相关问题解决
解决Azure AD B2C中使用
Revoke-AzureADUserAllRefreshToken的问题 核心结论:必须在Azure AD B2C目录上下文内执行命令
你遇到的“对象ID不存在”错误,本质是因为你在父Azure目录的Cloud Shell里操作——父目录和B2C目录是完全独立的身份租户,用户对象不共享,所以你输入的B2C用户ID在父目录里根本找不到。要执行这个撤销命令,必须切换到B2C目录的上下文。
步骤1:给Azure AD B2C目录关联订阅
Azure Cloud Shell需要绑定一个Azure订阅来存储它的配置和文件(比如首次打开时创建的存储账户),所以首先要把你的B2C目录和一个现有Azure订阅关联:
- 登录Azure门户,点击右上角的目录切换器,选择你的Azure AD B2C目录
- 在门户搜索栏输入“订阅”并进入订阅页面,确保当前上下文是B2C目录
- 点击“添加订阅”,从列表中选择你拥有权限的Azure订阅,完成关联
- 确认你在该订阅上拥有参与者或更高权限(否则无法创建Cloud Shell所需的存储资源)
步骤2:在B2C目录上下文打开并配置Cloud Shell
- 点击Azure门户右上角的Cloud Shell图标(>_),首次打开会提示创建存储账户,按照向导完成即可(这会使用刚才关联的订阅)
- 切换到PowerShell环境(Cloud Shell顶部可以切换Bash/PowerShell)
- 手动指定B2C租户上下文,避免自动跳回父目录:
(租户ID可以在B2C目录的“概述”页面找到)Connect-AzureAD -TenantId "<你的B2C租户ID>" - 验证上下文是否正确:运行
Get-AzureADTenantDetail,确认返回的是你的B2C租户信息
步骤3:正确执行撤销令牌命令
- 先获取B2C用户的正确ObjectId(别用父目录的用户ID!):
替换成目标用户的UPN,从返回结果中复制Get-AzureADUser -Filter "UserPrincipalName eq 'user@your-b2c-domain.com'"ObjectId - 执行撤销命令:
这次应该就能成功执行,不会再报对象ID不存在的错误了Revoke-AzureADUserAllRefreshToken -ObjectId "<用户的ObjectId>"
替代方案:本地PowerShell执行(无需Cloud Shell)
如果不想给B2C目录关联订阅,也可以在本地电脑上操作:
- 以管理员身份打开PowerShell,安装AzureAD模块:
Install-Module AzureAD -Force -AllowClobber - 连接到B2C租户:
Connect-AzureAD -TenantId "<你的B2C租户ID>" - 后续步骤和Cloud Shell一致:获取用户ObjectId,执行撤销命令
内容的提问来源于stack exchange,提问作者stumpykilo
相关产品推荐
相关产品推荐

