401 當您執行 Test-OAuthConnectivity Cmdlet 時發生拒絕存取錯誤

原始 KB 編號: 3090197

徵狀

當您執行 Test-OAuthConnectivity Cmdlet 來測試使用者的 OAuth 驗證時,作業會失敗,而且您會收到類似下列的訊息:

401 拒絕存取

原因

如果下列其中一個條件成立,就會發生此問題:

  • 缺少 OAuth 驗證所需的服務主體名稱 (SPN) 。
  • 您正在測試內部部署環境與 Microsoft Exchange Online 之間未同步處理的帳戶。

解決方案

若要修正此問題,請視情況採取下列其中一個動作。

案例 1 - SPN 遺失

注意事項

自 2024 年 3 月 30 日起,Azure AD 和 MSOnline PowerShell 模組已被取代。 若要深入瞭解,請閱讀 淘汰更新。 在此日期之後,這些模組的支援僅限於 Microsoft Graph PowerShell SDK 的移轉協助和安全性修正。 已淘汰的模組會繼續運作到 2025 年 3 月 30 日。

建議您移轉至 Microsoft Graph PowerShell,以與 Microsoft Entra ID (先前的 Azure AD) 互動。 如需常見的移轉問題,請參閱 移轉常見問題注意: 1.0.x 版的 MSOnline 可能會在 2024 年 6 月 30 日之後中斷。

  1. 開啟 [Exchange 管理命令介面]。

  2. 執行下列命令:

    Get-IntraOrganizationConfiguration
    

    請注意和 傳回的OnPremisesDiscoveryEndPointOnPremisesWebServiceEndPoint值。

  3. 執行下列命令:

    (Get-MsolServicePrincipal -ServicePrincipalName "00000002-0000-0ff1-ce00-000000000000").ServicePrincipalNames
    

    檢查是否傳回針對端點列出的功能變數名稱。

  4. 如果未傳回功能變數名稱,請使用 Set-MsolServicePrincipal Cmdlet 來新增它們。

    例如,下列命令會新增 網 mail.contoso.com 域。

    $AppId = (Get-MsolServicePrincipal -ServicePrincipalName "00000002-0000-0ff1-ce00-000000000000").AppPrincipalId
    Set-MsolServicePrincipal -AppPrincipalId $AppId -ServicePrincipalNames @("mail.contoso.com")
    

案例 2 - 您使用的帳戶未在內部部署環境與 Exchange Online 之間進行同步處理

當您執行 Cmdlet Test-OAuthConnectivity 時,請確定您使用的帳戶已在內部部署環境與 Exchange Online 之間進行同步處理。 例如,如果您使用內部部署系統管理員帳戶,就會遇到此問題。

在下列範例中,Fred 是內部部署環境與 Exchange Online 之間同步處理的用戶帳戶。

Test-OAuthConnectivity -Service EWS -TargetUri https://cas.contoso.com/ews/ -Mailbox "Fred"

其他相關資訊

是否仍需要協助? 請造訪 Microsoft 社群Microsoft Q&A