使用托管身份连接Exchange Online时遇System.UnauthorizedAccessException异常
问题描述
尝试创建使用系统分配托管身份连接Exchange Online的Azure PowerShell函数,已使用EXO v3模块,执行命令:
Connect-ExchangeOnline -ManagedIdentity -Organization <tenantname>
运行函数时抛出未授权异常:
Exception : Type : System.UnauthorizedAccessException TargetSite : Name : CheckResponseHeadersAndGetNewTokenIfNeeded DeclaringType : Microsoft.Exchange.Management.ExoPowershellSnapin.NewEXOModule MemberType : Method Module : Microsoft.Exchange.Management.ExoPowershellGalleryModule.dll Message : UnAuthorized Source : Microsoft.Exchange.Management.ExoPowershellGalleryModule HResult : -2147024891 StackTrace : at Microsoft.Exchange.Management.ExoPowershellSnapin.NewEXOModule.CheckResponseHeadersAndGetNewTokenIfNeeded(ITokenProvider tokenProvider, HttpResponseHeaders responseHeaders, String errorMessage, String cmdletId, TokenInformation& authHeader, Boolean& isRetryHappening) at Microsoft.Exchange.Management.ExoPowershellSnapin.NewEXOModule.ProcessRecord() at System.Management.Automation.Cmdlet.DoProcessRecord() at System.Management.Automation.CommandProcessor.ProcessRecord()
推测是系统分配的托管身份缺少Exchange Online访问权限,需补充权限配置。
解决步骤
获取托管身份的Object ID
在Azure门户进入目标函数应用→身份→系统分配页面,复制显示的Object ID。以全局管理员身份连接Exchange Online
打开PowerShell执行:Connect-ExchangeOnline按提示完成身份验证。
给托管身份分配Exchange角色
根据实际业务需求选择对应角色(例如Mail Recipients用于收件人管理、View-Only Recipients用于只读访问),执行命令:New-ManagementRoleAssignment -Role "<目标角色名称>" -ApplicationAccount "<托管身份Object ID>"验证权限分配
执行以下命令确认角色已成功分配:Get-ManagementRoleAssignment -ApplicationAccount "<托管身份Object ID>"
完成以上步骤后,重新运行Azure PowerShell函数,即可正常通过托管身份连接Exchange Online。
内容的提问来源于stack exchange,提问作者Strwase
相关产品推荐
相关产品推荐

