Błąd odmowy dostępu 401 podczas uruchamiania polecenia cmdlet Test-OAuthConnectivity

Oryginalny numer KB: 3090197

Symptomy

Po uruchomieniu Test-OAuthConnectivity polecenia cmdlet w celu przetestowania uwierzytelniania OAuth dla użytkownika operacja kończy się niepowodzeniem i zostanie wyświetlony komunikat podobny do następującego:

Odmowa dostępu 401

Przyczyna

Ten problem może wystąpić, jeśli spełniony jest jeden z następujących warunków:

  • Brak nazwy głównej usługi (SPN) wymaganej do uwierzytelniania OAuth.
  • Testujesz konto, które nie jest synchronizowane między środowiskiem lokalnym a Microsoft Exchange Online.

Rozwiązanie

Aby rozwiązać ten problem, wykonaj jedną z następujących akcji, stosownie do twojej sytuacji.

Scenariusz 1 — brak nazwy SPN

Uwaga

Moduły programu PowerShell Azure AD i MSOnline są przestarzałe od 30 marca 2024 r. Aby dowiedzieć się więcej, przeczytaj aktualizację wycofania. Po tej dacie obsługa tych modułów jest ograniczona do pomocy w migracji do zestawu Microsoft Graph PowerShell SDK i poprawek zabezpieczeń. Przestarzałe moduły będą nadal działać do 30 marca 2025 r.

Zalecamy migrację do programu Microsoft Graph PowerShell w celu interakcji z Tożsamość Microsoft Entra (dawniej Azure AD). Aby uzyskać typowe pytania dotyczące migracji, zapoznaj się z często zadawanymi pytaniami dotyczącymi migracji. Uwaga: W wersjach 1.0.x usługi MSOnline mogą wystąpić zakłócenia po 30 czerwca 2024 r.

  1. Otwórz powłokę zarządzania programu Exchange.

  2. Uruchom następujące polecenie:

    Get-IntraOrganizationConfiguration
    

    Zwróć uwagę na wartości zwracane dla OnPremisesDiscoveryEndPoint wartości i OnPremisesWebServiceEndPoint.

  3. Uruchom następujące polecenie:

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

    Sprawdź, czy są zwracane nazwy domen wymienione dla punktów końcowych.

  4. Jeśli nazwy domen nie zostaną zwrócone, użyj Set-MsolServicePrincipal polecenia cmdlet, aby je dodać.

    Na przykład następujące polecenie dodaje domenę mail.contoso.com .

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

Scenariusz 2 — używasz konta, które nie jest synchronizowane między środowiskiem lokalnym a Exchange Online

Po uruchomieniu Test-OAuthConnectivity polecenia cmdlet upewnij się, że używasz konta zsynchronizowanego między środowiskiem lokalnym a Exchange Online. Na przykład ten problem wystąpi, jeśli używasz konta administratora lokalnego.

W poniższym przykładzie Fred jest kontem użytkownika synchronizowanym między środowiskiem lokalnym a Exchange Online.

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

Więcej informacji

Nadal potrzebujesz pomocy? Przejdź do witryny Społeczność Microsoft lub forów Microsoft Q&A.