Ошибка 401 Доступ запрещен при запуске командлета Test-OAuthConnectivity

Исходный номер базы знаний: 3090197

Симптомы

При запуске командлета Test-OAuthConnectivity для проверки проверки подлинности OAuth для пользователя операция завершается ошибкой, и вы получите сообщение, похожее на следующее:

401 Доступ запрещен

Причина

Эта проблема может возникнуть, если одно из следующих условий верно.

  • Отсутствует имя субъекта-службы, которое требуется для проверки подлинности OAuth.
  • Вы тестируете учетную запись, которая не синхронизирована между локальной средой и Microsoft Exchange Online.

Резолюция

Чтобы устранить эту проблему, выполните одно из следующих действий, как это подходит для вашей ситуации.

Сценарий 1. Отсутствует SPN (имя участника-службы)

Замечание

Модули Azure AD и MSOnline PowerShell устарели с 30 марта 2024 г. Чтобы узнать больше, прочитайте обновлённую информацию о прекращении поддержки. После этой даты поддержка этих модулей ограничена поддержкой миграции в пакет SDK Для Microsoft Graph PowerShell и исправления безопасности. Устаревшие модули будут продолжать функционировать до 30 марта 2025 года.

Мы рекомендуем перейти на Microsoft Graph PowerShell для взаимодействия с Microsoft Entra ID (ранее — Azure AD). Часто задаваемые вопросы о миграции см. в разделе "Вопросы и ответы о миграции". Примечание: Возможны перебои в работе версий 1.0.x MSOnline после 30 июня 2024 г.

  1. Запустите командную консоль Exchange.

  2. Выполните следующую команду:

    Get-IntraOrganizationConfiguration
    

    Обратите внимание на значения, возвращаемые для OnPremisesDiscoveryEndPoint и OnPremisesWebServiceEndPoint.

  3. Выполните следующую команду:

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

    Проверьте, возвращаются ли доменные имена, перечисленные для конечных точек.

  4. Если имена доменов не возвращаются, используйте Set-MsolServicePrincipal командлет для их добавления.

    Например, следующая команда добавляет mail.contoso.com домен.

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

Сценарий 2. Вы используете учетную запись, которая не синхронизирована между локальной средой и Exchange Online

При запуске Test-OAuthConnectivity командлета убедитесь, что вы используете учетную запись, синхронизированную между локальной средой и Exchange Online. Например, эта проблема возникает при использовании локальной учетной записи администратора.

В следующем примере Фред — это учетная запись пользователя, синхронизированная между локальной средой и Exchange Online.

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

Дополнительные сведения

Все еще нужна помощь? Обратитесь к сообществу Майкрософт или просмотрите ответы Майкрософт на вопросы.