从DAP迁移至GDAP+Exchange Online PowerShell v3时遇程序集加载错误
迁移GDAP+Exchange Online PowerShell v3时遇到Microsoft.IdentityModel.Tokens加载失败问题
为遵守微软2023年3月31日的迁移截止日期,我们正从DAP迁移至GDAP+Exchange Online PowerShell v3,严格遵循微软官方文档及代码示例操作,但所有调用Connect-ExchangeOnline的请求均失败,报错:Could not load file or assembly 'Microsoft.IdentityModel.Tokens'。已提交微软工单但无后续响应,微软支持曾确认GDAP关系配置正确、模块版本无误,但问题仍未解决。
已完成的操作
- 在合作伙伴租户中创建新的多租户应用
- 已配置Partner Center API的
user_impersonation权限
- 已配置Partner Center API的
- 安装ExchangeOnlineManagement 3.1.0
- 安装PartnerCenter 3.0.10
- 建立与客户租户的GDAP关系
- 微软支持已确认该GDAP关系配置正确
- GDAP关系使用特权角色管理员权限
- 用于生成JWT令牌的用户账户同时属于AdminAgents及新建的GDAP安全组
使用的代码示例
$AppId = "ABC-123" // ID of the App Registration $AppSecret = "XYZ-456" // Secret for the App Registration $CustomerTenantId = "XXX-XXX-XXX-XXX" // Tenant ID of client environment $AppCredential = (New-Object System.Management.Automation.PSCredential ($AppId, (ConvertTo-SecureString $AppSecret -AsPlainText -Force))) $token = New-PartnerAccessToken -ApplicationId $AppId -Scopes 'https://outlook.office365.com/.default' -ServicePrincipal -Credential $AppCredential -Tenant $CustomerTenantId -UseAuthorizationCode Connect-ExchangeOnline -DelegatedOrganization $CustomerTenantId -AccessToken $token.AccessToken
报错信息
OperationStopped: Could not load file or assembly 'Microsoft.IdentityModel.Tokens, Version=6.22.1.0, Culture=neutral, PublicKeyToken=XXXXXXXXX'.
注:使用非交互式刷新令牌流程时也会出现此问题,上述交互式身份验证令牌流程仅作演示。所有调用Connect-ExchangeOnline的操作均会导致相同错误。
可能的解决方法
修复指定版本的Microsoft.IdentityModel.Tokens程序集
- 打开PowerShell运行:
Install-Package Microsoft.IdentityModel.Tokens -Version 6.22.1.0 - 测试程序集加载情况:
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.IdentityModel.Tokens'),若加载失败,手动将对应版本的DLL复制到ExchangeOnlineManagement模块目录(通常为C:\Program Files\WindowsPowerShell\Modules\ExchangeOnlineManagement\3.1.0)。
- 打开PowerShell运行:
彻底清理并重装PowerShell模块
- 卸载现有模块:
Uninstall-Module ExchangeOnlineManagement -Force Uninstall-Module PartnerCenter -Force - 删除模块残留文件,确保无旧版本遗留。
- 重新安装指定版本:
Install-Module ExchangeOnlineManagement -RequiredVersion 3.1.0 -Force Install-Module PartnerCenter -RequiredVersion 3.0.10 -Force
- 卸载现有模块:
检查PowerShell权限与执行策略
- 调整执行策略允许加载模块:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser - 以管理员身份运行PowerShell,避免权限不足导致的程序集加载失败。
- 调整执行策略允许加载模块:
验证令牌有效性
- 生成令牌后,通过JWT解码工具检查令牌的受众、权限范围是否正确,确保包含
https://outlook.office365.com/.default。
- 生成令牌后,通过JWT解码工具检查令牌的受众、权限范围是否正确,确保包含
内容的提问来源于stack exchange,提问作者Michael Bassili
相关产品推荐
相关产品推荐

