Connect-ExchangeOnline 未经授权

Sky*_*ter 0 powershell azure-active-directory

我正在努力更新我们的 PowerShell 脚本以使用更安全的连接方法。当我尝试时,我收到一条错误消息“未经授权”

PS X:> Connect-ExchangeOnline -AppId $clientId -CertificateThumbprint $thumbPrint -Organization $organization 未经授权位于 C:\Program Files\WindowsPowerShell\Modules\ExchangeOnlineManagement\3.0.0\netFramework\ExchangeOnlineManagement.psm1:730 char:21

  • 抛出 $_.Exception;
  • 类别信息:操作停止:(:) [],UnauthorizedAccessException
    • FullQualifiedErrorId:未经授权

我在下面的屏幕截图中突出显示的内容是我应该用于组织参数的内容吗?[剪]

如何修复未经授权的错误?

谢谢

Sri*_*evi 6

我同意@scottwtang ,如果您的应用程序没有所需的角色和权限,您将收到未经授权的错误。

我尝试在我的环境中重现相同的结果并得到以下结果:

我使用您之前问题中的以下脚本来生成证书:

$CN = "GraphApp" 
$cert=New-SelfSignedCertificate -Subject "CN=$CN" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -NotAfter (Get-Date).AddYears(5)
$Thumbprint = $Cert.Thumbprint
Get-ChildItem Cert:\CurrentUser\my\$Thumbprint | Export-Certificate -FilePath $env:USERPROFILE\Downloads\GraphApp.cer
Write-Output "$Thumbprint <- Copy/paste this (save it)"
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

现在我将此证书上传到 Azure AD 应用程序,如下所示:

在此输入图像描述

对于$organization参数,您需要传递您的域名。您可以在这里找到:

转到 Azure 门户 -> Azure Active Directory -> 概述 -> 主域

在此输入图像描述

当我运行以下脚本来连接Exchange Online时,出现Access denied如下错误:

$clientId="47xxxd8-8x2x-4xxx-bxx7-30cxxxxx8"
$thumbPrint="E4A0F6C6B85EBFxxxxxCD91B5803F88E5"
$organization="xxxxxxxx.onmicrosoft.com"

Connect-ExchangeOnline -AppId $clientId -CertificateThumbprint $thumbPrint -Organization $organization
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

解决该错误,您需要向应用程序添加角色API permissionDirectory

在此输入图像描述

确保授予管理员同意添加的权限,如下所示:

在此输入图像描述

现在我将Exchange 管理员角色添加到我的应用程序中,如下所示:

转到 Azure 门户 -> Azure Active Directory -> 角色和管理员 -> Exchange 管理员 -> 添加分配

在此输入图像描述

成功分配角色可能需要几分钟时间,如下所示:

在此输入图像描述

现在,我通过再次运行脚本连接到Exchange Online,并运行示例命令 Get-EXOMailbox -PropertySets Archive来验证它并成功获得响应,如下所示:

$clientId="47xxxd8-8x2x-4xxx-bxx7-30cxxxxx8"
$thumbPrint="E4A0F6C6B85EBFxxxxxCD91B5803F88E5"
$organization="xxxxxxxx.onmicrosoft.com"

Connect-ExchangeOnline -AppId $clientId -CertificateThumbprint $thumbPrint -Organization $organization
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

因此,请确保为您的应用程序分配所需的角色权限以修复错误。